尝试显示带有两位小数的数字时,number_format和sprintf的意外结果

时间:2016-06-28 09:00:28

标签: php printf number-formatting

我有一个返回此double的计算:6.4971508379888。如果我把它投射到float并回显它,那就是相同的数字。我想显示(不是圆形)只有两位小数的数字,所以我尝试了:

number_format((float)$number, 2, '.', '')

sprintf('%0.2f', (float)$number)

但在这两种情况下我都看到6.50而不是6.49。为什么会这样?

1 个答案:

答案 0 :(得分:1)

  

PHP根据给定的精度自动舍入值

如果您需要预期的结果,请遵循以下代码。

$precision = 2;
$number = floor($number * pow(10,$precision))/pow(10,$precision);
echo number_format((float)$number, $precision, '.', '');