6

我正在编写一个 PHP 脚本,它查看一个浮点值的 DB 表,它往往有点小,例如:

0.00052
0.00134
0.00103
0.00149
0.00085
0.00068
0.00077
0.00088
0.00169
0.00063

由于我不知道的原因,一些值以科学计数法出现在数据库中,例如:

1.12305e-06

该表设置为浮动,我尝试了 PHP 中的各种函数来强制数字显示为十进制,但无济于事。尽我所能,我无法让这个数字表在所有情况下都是十进制的。

关于如何解决这个问题的任何建议?尝试过typcasting to (float)and usingnumber_format()等几个选项,但每次都没有变化。

4

2 回答 2

2

CLI(可能还有其他地方)显示的内容似乎有六位数的限制。您的示例是 1.12305e-06 ,即 0.00000112305 将显示为 0.00000 - 尽管显然它不是零。

如果您坚持使用浮点数或双精度数,则必须使用round(columnName,5)强制以十进制值显示之类的东西来强制它们。否则,可能会切换到十进制数据类型。

来自http://dev.mysql.com/doc/refman/5.0/en/floating-point-types.html

因为浮点值是近似值而不是存储为精确值,所以在比较中尝试将它们视为精确值可能会导致问题。它们还受平台或实现依赖关系的影响。有关详细信息,请参阅第 C.5.5.8 节,“<a href="http://dev.mysql.com/doc/refman/5.0/en/problems-with-float.html" rel="nofollow">浮点值问题”</p>

另请参阅mysql 论坛上有关此确切问题的此线程。

于 2012-07-24T09:04:41.190 回答
0

在我的案例中,解决方案原来是从数据库中的浮点类型更改为十进制类型,因此感谢 Romain 的评论让我研究了该解决方案!

于 2012-07-25T05:24:01.903 回答