【问题标题】:MySQL JSON stores different floating point valueMySQL JSON 存储不同的浮点值
【发布时间】:2018-03-05 21:36:17
【问题描述】:

如何在 MySQL (5.7) 中对 JSON 数据列中的浮点值进行四舍五入?

我很难找到一个好的资源来了解如何解决我的问题。

会发生什么:

CREATE TABLE someTable (jdoc JSON);
INSERT INTO someTable VALUES('{"data":14970.911769838869}');

然后选择行:

SELECT * from someTable;

我以不同的最终数字返回数据: '{"data": 14970.911769838867}'

知道为什么会这样吗?我可以调整数据以防止这种情况发生吗?还是存在舍入精度问题?

【问题讨论】:

  • 你正处于浮点精度的极限。

标签: mysql json floating-point


【解决方案1】:

双精度浮点具有大约 16 位十进制数字的精度。您的号码有 17 位数字,因此无法准确地用浮点数表示,并且最后一位数字会出现舍入错误。

How many significant digits have floats and doubles in java?

这个问题是关于 Java 的,但几乎所有东西都使用相同的 IEEE 754 浮点格式,所以答案相当普遍。

【讨论】:

  • 嗯,这就解释了......当达到精度限制时,看到一个浮点数和存储一个浮点数并不意味着同样的事情。
猜你喜欢
  • 2019-12-01
  • 1970-01-01
  • 2012-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多