2010-09-14 67 views
0

我有一個表單輸入來獲得一個數字(這是一個價格)。它可以是像102,5這樣的小數。我必須將它與另一個小數進行比較,例如102,6。 該如何處理?我不想使用round(),因爲我得到完全比較。在PHP中比較小數點

回答

9

您可以在absolute(即數值)差值與一個 「小量」(你的 「忍」 ):

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

而且,一個小閱讀: 「What Every Computer Scientist Should Know About Floating-Point Arithmetic」 和「 Comparing floating point numbers「。

此外,你可能會發現,從而下面的問題有趣的(答案!):


這是正確的:得到決定什麼使兩個數字相等。這可能是0.1(使1.1等於1.0),0.011.021.03)等

+0

TX我測試,我會回來的 – Mamadou 2010-09-14 09:05:21

+0

TX!還沒有工作 – Mamadou 2010-09-14 10:41:19

+0

@Mamadou你的號碼是否有效? 'var_dump()'打印什麼? – jensgram 2010-09-14 11:07:01

3

不要存放價格爲花車,使用整數(存儲美分,不計)。

+0

好點。沒有注意到這個問題中的「這是價格」部分:) – jensgram 2010-09-14 09:04:10

+0

在計算價格方面肯定會更有意義。 – 2010-09-14 09:13:32

+0

TX我測試,我會回來 – Mamadou 2010-09-14 09:26:05

0

就讓它十進制出這種格式的

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

,並比較其

+0

好吧!問題是現在當我選擇(點)它不被視爲十進制昏迷!我希望你明白(法語)) – Mamadou 2010-09-14 10:32:59