gpt4 book ai didi

mysql - 保存到数据库的值不正确

转载 作者:太空宇宙 更新时间:2023-11-03 10:50:51 25 4
gpt4 key购买 nike

嗨,我有一个简单的问题。我只是将两个数字相乘:

143.778 * 17 = 2444.226

我什么时候制作对象:

$row = $this->createRow();
$row->price = 143.778 * 17;

没关系,但是什么时候我会保存它,通过

$row->save();

在数据库中将存储2444.226074。这是 mysql 中 float 的一些已知错误,或者 float 末尾出现“074”的位置?

最佳答案

是的,这似乎是一个 float 错误,因为不幸的是 float 是十进制数的近似值。将它们视为精确数字是一个常见的错误。随着对 float 使用更多的算术运算(将结果回收到方程式), float 的不精确性变得越来越明显。永远不要直接比较浮点值。

这里有一些来自 MySQL 的更多信息

http://dev.mysql.com/doc/refman/5.0/en/problems-with-float.html

尝试使用他们推荐的 DECIMAL 列。

The DECIMAL and NUMERIC types store exact numeric data values. These types are used when it is important to preserve exact precision, for example with monetary data. In MySQL, NUMERIC is implemented as DECIMAL, so the following remarks about DECIMAL apply equally to NUMERIC.

As of MySQL 5.0.3, DECIMAL values are stored in binary format. Previously, they were stored as strings, with one character used for each digit of the value, the decimal point (if the scale is greater than 0), and the “-” sign (for negative numbers). See Section 12.17, “Precision Math”.

关于mysql - 保存到数据库的值不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25217386/

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