在PHP中舍入小数

时间:2011-06-06 20:26:38

标签: php numbers rounding

我希望将一个数字显示为胜率,类似于你在ESPN棒球榜上看到的数字。如果用户没有损失,我希望百分比读为1.000。如果用户没有获胜,我希望它能读取.000。如果用户混合输赢,我想显示.xyz,即使y或y和z为0。

这段代码没有给出0的跟踪,也是小数点前的0(0.4而不是.400,0.56而不是.560):

$wpct1 = $wins / ($wins + $losses);
if($wpct1 == 1){$wpct = '1.000';}else{$wpct = round($wpct, 3);}

此代码获取初始0 befoer的小数,但仍然没有尾随零(.4而不是.400):

$wpct1 = $wins / ($wins + $losses);
if($wpct1 == 1){$wpct = '1.000';}else{$wpct = substr(round($wpct, 3), 1, 4);}

这第二个解决方案是让我更接近我想要的位置,我将如何使用额外的代码(一个或两个预告片,取决于小数)添加尾随0,或者是否有另一种方法使用round / substr会自动执行吗?

7 个答案:

答案 0 :(得分:2)

$wpct = ltrim(number_format($wins / ($wins + $losses), 3), '0');

这格式化小数点后三位数的数字并删除任何前导零。

有关详细信息,请参阅number_formatltrim

答案 1 :(得分:1)

sprintf('%04d',$wpct1);

将打印前导零

答案 2 :(得分:1)

你需要

number_format($wpct, 3)

答案 3 :(得分:1)

您可以使用str_pad()添加这样的尾随零:

if($wpct1 == 1){$wpct = '1.000';}else{$wpct = str_pad(substr(round($wpct, 3), 1, 4), 3, '0');}

答案 4 :(得分:0)

听起来像number_format就是你要找的东西。

答案 5 :(得分:0)

查看sprintf()

$x = 0.4;
echo sprintf("%01.3f", $x);

答案 6 :(得分:0)

您可以使用内置number_format

的php