【发布时间】:2009-12-26 07:55:27
【问题描述】:
如何正确地将数值保存到 SQLite3。我使用 Real 类型来存储数值。例如:当我存储 233333.00 时很好。但是当我存储 23333333.00 时,它变成了 23333300.00。为什么保存为2.3333333E7,检索为2.33333e+07。有没有办法克服这个问题?
【问题讨论】:
如何正确地将数值保存到 SQLite3。我使用 Real 类型来存储数值。例如:当我存储 233333.00 时很好。但是当我存储 23333333.00 时,它变成了 23333300.00。为什么保存为2.3333333E7,检索为2.33333e+07。有没有办法克服这个问题?
【问题讨论】:
SQLite 使用的 real 类型存储为 8 字节 IEEE 浮点数,不能准确存储所有值。如果您想要精确的值,请使用任一整数字符串。
【讨论】:
你正在失去精度,因为你的程序的变量是单精度的,你需要双精度。
对于适合尾数的整数值,浮点实际上是完全准确的。
你会得到 24 位单打和 53 位双打。
这根本不是 sqlite 问题。
【讨论】: