在PHP中,从小数中删除无用的零位,并删除2以上的小数

在PHP中,从小数中删除无用的零位,并删除2以上的小数,php,Php,我正试图找到一种快速的方法,首先只生成数字2小数,然后从结果值中删除零小数,如下所示: echo function(0.00); // 0 echo function(125.70); // 125.7 echo function(245.051); // 245.05 echo function(2245.0090); // 2245.01 echo number_format(0,2) // 0.00 我尝试了数字格式,但当我用0调用它时,它的行为如下: echo function

我正试图找到一种快速的方法,首先只生成数字2小数,然后从结果值中删除零小数,如下所示:

echo function(0.00);
// 0

echo function(125.70);
// 125.7

echo function(245.051);
// 245.05

echo function(2245.0090);
// 2245.01
echo number_format(0,2)
// 0.00
我尝试了数字格式,但当我用0调用它时,它的行为如下:

echo function(0.00);
// 0

echo function(125.70);
// 125.7

echo function(245.051);
// 245.05

echo function(2245.0090);
// 2245.01
echo number_format(0,2)
// 0.00
但是我想要0


是否有一些优化的方法可以做到这一点?

可能有更好的方法来实现这一点,但首先想到的方法是使用
rtrim()
.0
作为修剪来修剪它。然而,当您有类似
0.00
(并且只返回一个空字符串)的情况时,这也将完全删除,因此我们可以对其执行显式检查

函数myFormat($number,$precision=2){
$number=rtrim(圆形($number,$precision),“.0”);
if(空($number)){
$number=0;
}
返回$number;
}
echo myFormat(0.00);//0
echo myFormat(0.01);//0.01
echo myFormat(0.10);//0.1
echo myFormat(1.00);//1.
echo myFormat(2245.0090);//2245.01
您可以试试这个

<?php 
echo (float)number_format(0,2);

round返回0.0,但我想要0“round返回0.0”-你在说什么
round($number,2)
为所有四个测试用例准确地给出了您想要的结果。
echo myFormat(2245.0090);//2245.0090
但是我想要
2245.01
如果它像我在问题中所显示的那样超过2位小数,你能不能先
round()
它,然后按照@Qirel的建议去做?如果你也想对它进行取整,那么只需应用
round()
函数,精度为2。您可以在函数的第一行中执行此操作。参见修改后的答案。
round($number,2)已经给出了完全相同的结果。除了
舍入(0.0,2)
,@04FS。这将导致
0.0
,而OP想要
0
,当小数为0时,没有任何小数点。