sprintf(或其他函数)用于整数/浮点数的条件格式化

时间:2011-07-22 08:40:05

标签: php

我需要在数据库中显示一个作为浮点数

的数字

如果数字ha没有小数部分,则应显示为int,并在其他情况下显示为小数。

示例:

8.00 should be displayed 8
8.45 should be displayed 8.45

现有代码使用roud():

使用奇怪的(但功能解决方案)
if(round($number) == $number) {
 $number = round($number);
}

我希望通过示例找到一些sprintf的解决方案,以获得更自我解释的代码(圆形的实际解决方案不是很容易理解)

你们中是否有人遇到过这个问题并且知道解决方案 (我尝试使用sprintf(),但我没有管理如何获得可变数量的小数)

3 个答案:

答案 0 :(得分:1)

试试这个:

$numbers = array(
    8.00, 8.45, 20.00, '8.00', '8.45', '20.00'
);

foreach ($numbers as $nr) {
    echo (string)(double)$nr, '<br />';
}

答案 1 :(得分:0)

echo +'8.45';

将显示8.45和

echo +'8.00';

将显示8;)

答案 2 :(得分:0)

不太确定这是您正在寻找的内容,但要将您的舍入代码缩短为一个语句,请使用此功能。

$number = (int)$number == $number ? (int)$number : $number;