簡體   English   中英

number_format() php 刪除尾隨零

[英]number_format() php remove trailing zeros

如果數字不是浮點數/小數,有沒有辦法用number_format()小數位?

例如,我想要以下輸入/輸出組合:

50.8 => 50.8
50.23 => 50.23
50.0 => 50
50.00 => 50
50 => 50

有沒有辦法只用一個標准的number_format()來做到這一點?

您可以將0添加到格式化字符串中。 它將刪除尾隨零。

echo number_format(3.0, 1, ".", "") + 0; // 3

更好的解決方案:上述解決方案不適用於特定的語言環境。 因此,在這種情況下,您只需將數字類型轉換為float數據類型即可。 注意:將類型轉換為float后可能會降低精度,數字越大,截斷數字的機會越大。

echo (float) 3.0; // 3

終極解決方案:唯一安全的方法是使用正則表達式:

echo preg_replace("/\.?0+$/", "", 3.0); // 3
echo preg_replace("/\d+\.?\d*(\.?0+)/", "", 3.0); // 3

片段 1 演示

片段 2 演示

片段 3 演示

如果你想在這里使用空格是更好的解決方案

function real_num ($num, $float)
{
    if (!is_numeric($num) OR is_nan($num)  ) return 0;

    $r = number_format($num, $float, '.', ' ');

    if (false !== strpos($r, '.'))
        $r = rtrim(rtrim($r, '0'), '.');

    return $r;
} 

用:

$a = 50.00;

$a = round($a, 2);

即使該數字后面有 2 個零,如果您對它進行四舍五入,它也不會顯示小數位,除非它們具有某種值。

所以使用 2 個位置四舍五入的 50.00 將是 50,但 50.23 將是 50.23

謝謝,是的,謝謝。 所以很容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM