簡體   English   中英

如何確保始終使用 PHP 對浮點數進行四舍五入?

[英]How can I make sure a float will always be rounded up with PHP?

如果存在任何小數,我想確保 PHP 中的浮點數被四舍五入,而不必擔心數學四舍五入規則。 此功能將按如下方式工作:

1.1 to 2
1.2 to 2
1.9 to 2
2.3 to 3
2.8 to 3

我知道round()函數存在,但如果找到任何小數,我看不到任何四舍五入的函數。 有什么簡單的方法可以做到這一點嗎?

使用ceil函數:

$number = ceil(1.1); //2

我知道這是一個古老的話題,但它出現在 Google 中。 我將擴展 Blake Plumb 關於精度的回答。

ceil(1024.321 * 100) / 100;

乘以 100 並除以 100 僅適用於百分之一。 這在十分之一、千分之一、千分之一等上是不准確的。

function round_up($number, $precision = 2)
{
    $fig = pow(10, $precision);
    return (ceil($number * $fig) / $fig);
}

結果:

var_dump(round_up(1024.654321, 0)); // Output: float(1025)
var_dump(round_up(1024.654321, 1)); // Output: float(1024.7)
var_dump(round_up(1024.654321, 2)); // Output: float(1024.66)
var_dump(round_up(1024.654321, 3)); // Output: float(1024.655)
var_dump(round_up(1024.654321, 4)); // Output: float(1024.6544)
var_dump(round_up(1024.654321, 5)); // Output: float(1024.65433)
var_dump(round_up(1024.654321, 6)); // Output: float(1024.654321)

筆記:

感謝 Joseph McDermott 和brandom 為改進我的原始片段所做的貢獻。

官方的Ceil函數會為你做到這一點。

取自示例:

<?php
echo ceil(4.3);    // 5
echo ceil(9.999);  // 10
echo ceil(-3.14);  // -3
?>

我知道這個問題早就有人回答了,但是當我對這個話題進行谷歌搜索時它出現了。 如果您想精確四舍五入,那么一個好方法是使用 ceil 函數並將數字乘以您想要表示的小數點數,然后除以該數字。

ceil(1024.321*100)/100

將產生 1024.33

我喜歡 Ash 的回應,盡管我會:

$fig = (int) str_pad('1', $precision + 1, '0');

如果我提供精度“2”,我希望它四舍五入到小數點后兩位,這是有道理的。 雖然我想是選擇問題。 感謝您的回答 Ash,效果很好。

暫無
暫無

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

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