我的号码:53.199999999999996
我尝试了所有这些:
sprintf("%01.2f", $number); // 53.20
sprintf('%0.2f', $number); // 53.20
floor(($number * 100)) / 100; // 53.2
intval(($number * 100)) / 100; // 53.2
我想:53.19
我该怎么做?
答案 0 :(得分:2)
您可以使用number_format():http://php.net/number_format
$number = 53.1999999
echo int() number_format((float)$number, 2, '.', '');
//53.19
你需要这样的floor():
echo floor($number*100)/100;
或者你转换为整数:
echo 0.01 * (int)($number*100);
这种方式不会四舍五入。
答案 1 :(得分:2)
在设置此浮点数
之前,必须设置精度(浮点)ini_set('precision', 17);
$number = 53.199999999999996;
$number = ($pos = strpos($number,'.')) ? substr($number,0,$pos + 3) : number_format($number);
echo $number ;
输出:
53.19
PHP使用此设置舍入浮点数,如果设置变量而不引用类似:
$number = 53.199999999999996;
echo $number;
PHP将对此数字进行舍入 在var_dump之后,print,echo,...输出将是:
53.2
我们可以使用引号
设置数值$number = '53.199999999999996';
echo $number;
PHP不会对此进行舍入,因为它现在是字符串!
答案 2 :(得分:0)
我已经检查并使用了intval它在php 5.3版本上的工作,但是你已经提到它在你的最终没有用了。
$number = 53.1999999;
echo intval(($number*100))/100;