2013-02-21 15 views
1

有兩個值'a'和'b'。我需要檢查一個大於'b'如何在javascript中檢查更大的值?

如果它是一個很大的值,它檢查更大的值。但這裏的差異只在點值上。它忽略點值

var a='20.796'; 
var b='20.190'; 
if (parseInt(a) > parseInt(b)) 
{ 
alert("function can work"); 
return false; 
} 
+0

爲什麼要將它們定義爲字符串,如果你想用數字來比較它們呢? – thatidiotguy 2013-02-21 22:18:11

+1

嘗試使用'parseFloat'代替 – JaredMcAteer 2013-02-21 22:18:29

+0

使用'如果(parseFloat(一)> parseFloat(B))'...這將工作的優良您的具體情況 – 2013-02-21 22:20:19

回答

0

它忽略了點值,因爲您將它們解析爲if語句條件中的整數。你有幾個選項。

  1. 將變量定義爲花車而不是字符串;刪除parseInt函數調用。
  2. 交換parseIntparseFloat調用。
1

您將您的號碼解析爲integers。你需要理性/實際的數字。使用parseFloat

var a = '20.796'; 
var b = '20.190'; 
console.log(parseInt(a,10),parseInt(b,10)); 
console.log(parseFloat(a),parseFloat(b)); 

結果:如果你使用parseInt(string [, radix])

 
20 20 
20.769 20.190 

另外,請始終使用radix說法。

此外 - 如果ab是數字,請不要將它們的值保存在字符串中。它更容易保存它們的值:

var a = 20.796; 
var b = 20.190; 
0

將您的數字定義爲數字,並移除對parseInt的調用或使用parseFloat。

var a=20.796; 
var b=20.190; 
if (a > b) 
{ 
    alert("function can work"); 
    return false; 
} 

if (parseFloat(a) > parseFloat(b)) 
{ 
    alert("function can work"); 
    return false; 
} 
+0

'parseFloat()'不採取第二個參數;沒有基數是真的需要。 – KarimSaNet 2013-02-21 22:24:19

+0

@KarimSaNet這就是複製粘貼將得到你。大聲笑。的確,parseFloat只需要一個參數。 – 2013-02-21 22:35:12

0

在這裏,你的解決方案是解析字符串作爲浮動點,而不是整數。例如:

var a = '20.796', 
    b = '20.190'; 
if (parseFloat(a) > parseFloat(b)) { 
    // TODO: .. code .. 
} 

您的代碼現在正在將字符串解析爲整數。整數是整數值,不能包含十進制值,同時浮點數或浮點數可以包含十進制值。當你在浮點上調用'parseInt()'時,它會截斷(或刪除)十進制值並保持整個值。這顯然不是你想要的。

PS:我猜你是新來的JavaScript,所以我只想祝你學習它的好運氣。 Personnaly,如果你學習的很好,我會發現JavaScript是一門非常美麗的語言。