【问题标题】:Problem with truncation of floating point values in DBSlayerDBSlayer 中浮点值截断问题
【发布时间】:2010-06-09 07:48:17
【问题描述】:

当我通过 DBslayer http://code.nytimes.com/projects/dbslayer 运行查询时,浮点结果为 截断为总共六位数(加上小数点和负数 需要时签名)。

{ ... "lat":52.2228,"lng":-2.19906, ... }

当我在 MySQL 中运行相同的查询时,结果符合预期。

| 52.22280884 | -2.19906425 |

首先,我将 DBSlayer 确定为导致此问题的原因是否正确 影响? (或者它使用的JSON库等)

其次,这个浮点精度是否可以在 DBSlayer 中配置?

谢谢,

克里斯。

附: Ubuntu 9.10,x86_64

路径:. 网址:http://dbslayer.googlecode.com/svn/trunk 存储库根:http://dbslayer.googlecode.com/svn 存储库 UUID:5df2be84-4748-0410-afd4-f777a056bd0c 修订:65 节点种类:目录 时间表:正常 最后更改作者:dgottfrid 最后更改版本:65 最后更改日期:2008-03-28 22:52:46 +0000(2008 年 3 月 28 日星期五)

【问题讨论】:

    标签: mysql json dbslayer


    【解决方案1】:

    我最终解决了这个问题。

    DBSlayer 有几个地方使用 printf 的 %g 来格式化双精度。这仅给出 6 个有效数字。

    用 %.15g 替换所有这些出现,并重新编译,已经解决了问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-31
      • 2011-04-29
      • 2019-09-12
      • 2011-06-07
      相关资源
      最近更新 更多