MySQL JSON存储不同的浮点值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL JSON存储不同的浮点值相关的知识,希望对你有一定的参考价值。

如何在mysql(5.7)中舍入JSON数据列中的浮点值?

我无法找到一个好的资源来知道如何解决我的问题。

这是发生的事情:

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

然后选择行:

SELECT * from someTable;

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

知道为什么会这样吗?我可以以某种方式调整数据以防止这种情况或是否存在舍入精度问题?

答案

双精度浮点具有大约16个十进制数字的精度。您的号码有17位数字,因此无法以浮点表示,并且您在最后一位数字中得到舍入误差。

How many significant digits have floats and doubles in java?

问题是关于Java,但几乎所有东西都使用相同的IEEE 754浮点格式,所以答案非常适用。

以上是关于MySQL JSON存储不同的浮点值的主要内容,如果未能解决你的问题,请参考以下文章

mysql基本知识

如何阻止 mysql 舍入浮点值?

如何将字符串列表转换为c#中的浮点列表,统一?

MySQL 解析和拆分 JSON 值

Elasticsearch:如何将浮点值存储到整型字段中

Elasticsearch:如何将浮点值存储到整型字段中