我正在编写一个PHP脚本来查看浮点值的数据库表,这些数据库往往有点小,例如:
0.00052
0.00134
0.00103
0.00149
0.00085
0.00068
0.00077
0.00088
0.00169
0.00063
由于我不知道的原因,某些值以科学计数法出现在数据库中,例如:
1.12305e-06
该表设置为float,我已经尝试了PHP中的各种函数来强制数字显示为十进制,但无济于事。尽我所能,我无法在所有情况下都将这个数字表始终保持十进制。
有关如何解决此问题的任何建议?尝试过使用(float)
和使用number_format()
以及其他几个选项进行排版,但每次都没有变化。
答案 0 :(得分:2)
CLI显示的内容似乎有六位数限制(可能在其他地方)。你拥有的例子是1.12305e-06,它是0.00000112305,显示为0.00000 - 虽然它显然不是零。
如果您坚持使用浮点数或双打,则必须使用round(columnName,5)
之类的方法强制它们强制显示十进制值。否则,可能会切换到decimnal数据类型。
来自http://dev.mysql.com/doc/refman/5.0/en/floating-point-types.html
由于浮点值是近似值而未存储为精确值,因此尝试在比较中将它们视为精确值可能会导致问题。它们还受平台或实现依赖性的影响。有关更多信息,请参见第C.5.5.8节“Problems with Floating-Point Values”
另请参阅mysql论坛上有关此确切问题的thread。
答案 1 :(得分:0)
在我的案例中,解决方案在数据库中从浮点数变为十进制类型,所以感谢Romain的评论让我看到了这个解决方案!