number_format舍入最后的十进制数并增加到下一轮十进制数

时间:2012-11-29 17:48:56

标签: php decimal rounding number-formatting decimal-point

我的MySQL表中有一个DOUBLE数据类型列,我的值为:

14.5299

但PHP number_format将该值舍入为:

14.5300 

如果我只是echo 14.5299,则输出:

14.53

如果不在我的HTML标记中硬编码任何内容,如何输出14.5299

4 个答案:

答案 0 :(得分:8)

使用sprintf()

echo sprintf("%2.4f", 14.5399);

文档:http://us2.php.net/sprintf

答案 1 :(得分:3)

这对我有用:

<?php
$double = 14.5299;
echo number_format(floor($double*100)/100, 2);
?>

结果是:14.52

答案 2 :(得分:2)

$double = 14.5299;
var_dump( number_format($double, 4, '.', ',') );

...打印:

string(7) "14.5299"

......正如所料。

我的有根据的猜测是,你的号码实际上更多是9:

$double = 14.52999;

...在这种情况下,14.5300是正确的回合方式。

答案 3 :(得分:0)

下一个功能应该有效:

function fixedNumberFormat($float, $decimals, $withFormat = true) {
   $decPoint = ($withFormat) ? "," : null;
   $thousandsSep = ($withFormat) ? "," : null;
   return substr(number_format($float, $decimals + 1), 0, -1);
}

fixedNumberFormat(14.5299, 4);