代码之家  ›  专栏  ›  技术社区  ›  xenonite

在SQLite中存储双值:如何确保精度?

  •  6
  • xenonite  · 技术社区  · 16 年前

    NEED 精确到逗号后第9个数字的绝对精度。

    现在我有一张这样的桌子:

    CREATE TABLE x REAL lng;
    

    插入(硬编码的)某物,如:

    INSERT INTO x lng = '1.0';
    

    除了将值存储为“文本”字段(需要昂贵的强制转换)或将它们存储为整数(意味着我需要在每次写/读操作时进行乘法/除法)之外,有没有其他方法来强制执行我需要的精度?

    2 回复  |  直到 16 年前
        1
  •  13
  •   Pentium10    16 年前

    SQLite是 typeless ,这意味着所有表示都是以文本形式编写的,可能包装器api会进行一些您不知道的转换,从而得到这些结果。

    去做吧。

    当你读出double时,确保你以正确的格式保存,你可以使用 getDouble 在柱子上。

        2
  •  4
  •   Michael Borgwardt    16 年前

    double 有大约17位小数的精度,所以如果9位是你需要的,应该没有问题(假设你不做任何复杂的计算这些值)。确保你永远不会用 float ,因为它只有大约7位数的精度。

    你也应该确保你明白 how binary floating-point works 总是