number_format()的替代方法将删除`.00`但会留下`.``或`.567`

时间:2018-04-29 10:12:02

标签: php

我的数字看起来像这样:

    175.0000
    185.0000
    195.0000
    205.0000
    13.0000
    15.0000

但我的数字看起来像这样:

    10.5000
    7.5000

函数number_format()没有删除它,因为如果我将其设置为保留1小数位,则会将.0保留为不是7.5的数字}或10.5

是否有一个函数只有在小于0时才显示小数点?

5 个答案:

答案 0 :(得分:1)

您可以将数字与其整数值进行比较,以检查所需的小数位数:

$num = 7.0;
echo number_format($num, ($num == (int)$num) ? 0 : 1);
$num = 7.5;
echo number_format($num, ($num == (int)$num) ? 0 : 1);

输出:

7
7.5

较短版本仅当需要1位小数:

echo number_format($num, $num != (int)$num); // bool to int = 0 or 1.

另一种方法是使用rtrim()两次:首先是zéros,第二种是dot:

echo rtrim(rtrim(number_format($num, 3), '0'),'.');

答案 1 :(得分:1)

我对php不是很有经验,但我发现了这个

echo 13.00 + 0; //gives you 13
echo '125.00' + 0; //gives you 125
echo 76.5 + 0; //gives you 76.5

PHP Type Juggling

答案 2 :(得分:1)

试试这个:

$arr=[175.0000, 185.0000, 195.0000, 205.0000, 13.0000, 15.0000, 10.5000, 7.5000 ];
foreach ($arr as $value) {
    echo round($value,2)."\n";
}

这肯定会有效!

答案 3 :(得分:1)

试试这个

$a =  Array("13.0000",
            "15.0000",
            "10.5000",
            "7.5000");

$a = preg_replace('/0+$/', "", $a);
$a = preg_replace('/[.]$/', "", $a);

结果= 13,15,10.5,7.5

答案 4 :(得分:0)

这不是PHP,但它是通用算法。

有几种方法可以做到这一点:

if unformattedNumber % 1 == unformattedNumber:
    formattedNumber = number_format(unformattedNumber)
else:
    formattedNumber = number_format(unformattedNumber, 1)

formattedNumber = number_format(unformattedNumber, 1)
if formattedNumber[-1] == 0:
    formattedNumber = number_format(formattedNumber)