浮点数总是向上舍入

时间:2014-02-18 14:41:29

标签: php rounding

我有一个浮点数。我想像这样围绕它:

1.301  => 1.31
1.309  => 1.31
1.3001 => 1.30
1.3009 => 1.30

到目前为止,我已经尝试过这个:

$number = ceil($number * 100) / 100;

这几乎是完美的,但仍然不完美:

1.3301 => 1.34 // It should be 1.33

有没有办法解决我的问题?非常感谢您的帮助。

解决 来自Niet the Dark Absol的回答: $ number = ceil(floor($ number * 1000)/ 10)/ 100;

再次,tks for all帮助:)

1 个答案:

答案 0 :(得分:6)

您似乎正在做的是向下舍入到三位数,然后向上舍入到两位数。

我不会假装知道这有多大意义。

$number = ceil( floor($number*1000) / 10) / 100;

要保留两位小数,请添加:

$number = number_format($number,2);
// OR:
$number = sprintf("%.2f",$number);

但请注意,上述两个结果都是字符串,因此只应用于输出。