gpt4 book ai didi

php - mysql float数据返回不同的值

转载 作者:行者123 更新时间:2023-11-29 07:52:50 25 4
gpt4 key购买 nike

我正在尝试创建一个具有许多小数的浮点值。我的 table

CREATE TABLE number_type_check (
id INT(10) NULL DEFAULT NULL,
floatNumber FLOAT(18,5) NULL DEFAULT NULL
)

当我运行查询时:

INSERT INTO number_type_check (floatNumber) VALUES (987654321.98765);

它返回987654336.00000而不是987654321.98765

最佳答案

这是 FLOAT 的常见舍入问题。您将得到一个 4 字节单精度 FLOAT 列,因为您的精度值小于 24。您不能期望这样的 4 字节单精度列具有 14 位精度,请参阅 Single precision floating point format

MySQL also supports this optional precision specification, but the precision value is used only to determine storage size. A precision from 0 to 23 results in a 4-byte single-precision FLOAT column. A precision from 24 to 53 results in an 8-byte double-precision DOUBLE column.
[...]
MySQL performs rounding when storing values, so if you insert 999.00009 into a FLOAT(7,4) column, the approximate result is 999.0001

来源:Floating-Point Types (Approximate Value) - FLOAT, DOUBLE

如果需要更高的精度,请使用 DECIMAL 或 DOUBLE。

看看this demo .

关于php - mysql float数据返回不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25977005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com