這個非常簡單的數學運算是混淆了我..的Javascript數學運算結果
var cap = '17.00'
var amount = '114.00';
if(amount > cap){
alert('Greater');
}else{
alert('Less Than');
}
爲什麼會這樣的結果說114.00
小於17.00
?
我相信它是一個非常簡單的答案。這些都是整數,所以我認爲這將是對價值的直接比較,但顯然我錯了?
這個非常簡單的數學運算是混淆了我..的Javascript數學運算結果
var cap = '17.00'
var amount = '114.00';
if(amount > cap){
alert('Greater');
}else{
alert('Less Than');
}
爲什麼會這樣的結果說114.00
小於17.00
?
我相信它是一個非常簡單的答案。這些都是整數,所以我認爲這將是對價值的直接比較,但顯然我錯了?
這並不是說114.00
小於17.00
,而是說"114.00"
出現在"17.00"
之前。
您正在比較字符串,因此根據字符串如何排序來完成比較,而不是它們表示的數字值。
如果要比較的數字,你需要把數字的變量:
var cap = 17.00;
var amount = 114.00;
去除環境的數字引號。你正在比較字符串而不是數字。
這些都是整數,所以我想這將是值
這就是問題的直接比較:他們不是整數,他們是字符串。字符串按字典順序進行比較,例如('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');
}
代碼中沒有整數。首先,他們是絃樂隊。其次,如果你刪除'''s,由於'.00',它們仍然不是整數。第三,它們仍然不是整數,因爲JavaScript中的所有數字都是雙精度。 – 2014-10-18 22:00:09