簡體   English   中英

比較PHP中的小數

[英]Compare decimals in PHP

我有一個表單輸入來獲取數字(這是一個價格)。 它可以是一個小數,例如102,5。 我必須將其與另一個小數進行比較,例如102,6。 如何處理呢? 我不想使用round(),因為我可以進行精確比較。

您可以將絕對 (即數值)差異與“ε”(您的“公差” 1 )進行比較:

$epsilon = 0.01;
$diff = abs(102.5 - 102.6); // .1
if ($diff <= $epsilon) {
    // The numbers are equal
} else {
    // The numbers are not equal enough!
}

並且,閱讀一小段:“ 每個計算機科學家都應該了解的浮點算法 ”和“ 比較浮點數 ”。

此外,您可能會發現有趣的以下SO問題(和答案!):


1是的: 要決定是什么使兩個數字相等。 它可以被0.1 (使1.1等於1.0 ), 0.011.021.03 )等。

不要將價格存儲為浮點數,而應使用整數(存儲美分,而不是美元)。

只要將此格式設為小數

$kinda_decimal = "102,5";
$kinda_decimal = floatval(str_replace(",",".",$kinda_decimal));

比較一下

暫無
暫無

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

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