2014-10-18 68 views
-3

這個非常簡單的數學運算是混淆了我..的Javascript數學運算結果

var cap = '17.00' 
var amount = '114.00'; 

if(amount > cap){ 
    alert('Greater'); 
}else{ 
    alert('Less Than'); 
} 

爲什麼會這樣的結果說114.00小於17.00

我相信它是一個非常簡單的答案。這些都是整數,所以我認爲這將是對價值的直接比較,但顯然我錯了?

+0

代碼中沒有整數。首先,他們是絃樂隊。其次,如果你刪除'''s,由於'.00',它們仍然不是整數。第三,它們仍然不是整數,因爲JavaScript中的所有數字都是雙精度。 – 2014-10-18 22:00:09

回答

5

這並不是說114.00小於17.00,而是說"114.00"出現在"17.00"之前。

您正在比較字符串,因此根據字符串如何排序來完成比較,而不是它們表示的數字值。

如果要比較的數字,你需要把數字的變量:

var cap = 17.00; 
var amount = 114.00; 
1

去除環境的數字引號。你正在比較字符串而不是數字。

2

這些都是整數,所以我想這將是值

這就是問題的直接比較:他們不是整數,他們是字符串。字符串按字典順序進行比較,例如('a' < 'b') === true('a' < 'aaa') === true

如果要比較他們的數量,確保他們的數字開始與:

var cap = 17.00; // the .00 is redundant though, just 17 would also work 
var amount = 114.00; 

,或者如果這些變量從其他地方收到的字符串,首先將它們轉換:

var cap = '17.00'; 
var amount = '114.00'; 
if (Number(cap) < Number(amount)){ 
    alert('Greater'); 
}else{ 
    alert('Less Than'); 
}