我想在MySQL数据库中存储偶尔的十进制值,并在我的PHP应用程序中显示它们。让我解释一下,偶尔的十进制值是什么意思。数字在大多数时间都是整数,就像一个整数。例如,160或170等。但有时我需要保存像98.6这样的值。
首先我在数据库中使用了DECIMAL(4,1)
数据类型,我发现我总是得到这样的数字:160.0,170.0和98.6等。所以,我把它改为FLOAT
。在我的本地环境中,我在PHP应用程序和phpMyAdmin上看到数字为160,170,98.6等。但在我的生产环境中,我在phpMyAdmin上看到了160,170,98.6等数字。但在PHP应用程序上,我看到的数字如160,170,98.599998474121等。
现在我需要决定是切换回decimal
还是继续使用float
。无论哪种方式,我都需要找到一个解决方案,将数字转换为如下格式:160,170和98.6等。
您认为为此目的更好:decimal
或float
?如果数字的小数部分为零(使用decimal
时),将数字转换为整数的最佳方法是什么?将浮点值(如98.599998474121)转换为98.6的最佳方法是什么?
如果数字的小数部分为零,则将数字转换为整数:
<?php
if (fmod($number, 1) == 0) {
$number = intval($number)
}
还有更好的方法吗?
答案 0 :(得分:0)
我也遇到过这个错误。 (阅读此http://www.leaseweblabs.com/2013/06/the-php-floating-point-precision-is-wrong-by-default/)
这是与php相关的错误。
如果您确定您的小数部分最多只有一位数而您遇到更多数字,则表示您需要重新处理该数字
您可以获得如此精确度:
function precision($num) {
return strlen(substr($num, strpos($num, '.')+1));
}