2013-06-27 109 views
0

兩大變量我有2個大的變數,我需要比較喜歡:比較在JavaScript

var a = 15000000000000000000000001 // integer 
var b = "15000000000000000000000000" // string 

在我所有的測試比較得到錯誤的結果。 如:

  1. 轉換變種b分成一個整數

     
    var a = 15000000000000000000000001 
    var b = 15000000000000000000000000 
    a > b // return false and is wrong 
    
  2. 轉換一個變種成一個字符串

     
    var a = "1500000000000000000000001" 
    var b = "15000000000000000000000000" 
    a > b // return true and is wrong 
    

我的解決辦法:

function compareCheck(a,b){ 
    if (a.length > b.length) { 
     return true; 
    } 
    else if (a.length == b.length) { 
     if (a.localeCompare(b) > 0) { 
      return true 
     } 
     else return false; 
    } 
    else return false; 
} 

var a = "15000000000000000000000001" 
var b = "15000000000000000000000000" 

compareCheck(a,b) // return true and is correct 

var a = "1500000000000000000000001" 
var b = "15000000000000000000000000" 

compareCheck(a,b) // return false and is correct 

我的問題是找到的解決方案是否是正確的,或者將來會有問題?

+0

對不起,沒有建設性,但是這不是這樣的問題,從像JavaScript這樣的語言,它的「是啊,無論」數據類型的方法! – bazza

+0

這取決於你想要獲得什麼'00000001> 900' – perreal

+0

我的變量從不以0開頭。基本上它們是數字,但只要javascript有大數目的問題,我們必須將它們轉換爲字符串。 –

回答

1

這裏我認爲的標準做法是從另一個數字中減去一個數字並將其與一個epsilon值進行比較。

+0

對於其中一個案例,比較兩個整數是有意義的。但是OP的解決方案表明,對於兩個字符串的情況,他希望長度最長的字符串,但如果它們相同,則比較其他字符? – damienc88