浮点数总是向上舍入

Duc*_*Anh 1 php rounding

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

1.301  => 1.31
1.309  => 1.31
1.3001 => 1.30
1.3009 => 1.30
Run Code Online (Sandbox Code Playgroud)

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

$number = ceil($number * 100) / 100;
Run Code Online (Sandbox Code Playgroud)

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

1.3301 => 1.34 // It should be 1.33
Run Code Online (Sandbox Code Playgroud)

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

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

同样,tks为所有帮助:)

Nie*_*sol 6

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

我不打算假装知道这有多大意义.

$number = ceil( floor($number*1000) / 10) / 100;
Run Code Online (Sandbox Code Playgroud)

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

$number = number_format($number,2);
// OR:
$number = sprintf("%.2f",$number);
Run Code Online (Sandbox Code Playgroud)

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