使用PHP删除两位小数后的数字而非圆数

时间:2014-09-27 18:55:49

标签: php numbers number-formatting

我的号码: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

我该怎么做?

3 个答案:

答案 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

Link

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;
相关问题