2013-06-27 4 views
0

에서 두 개의 큰 변수를 비교하고, 내가 좋아하는 비교해야 : 내 테스트 비교가 잘못된 결과를 얻을 수 모두에서내가이 개 큰 변수가 자바 스크립트

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

. 예 :

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 
,536,913,632 : 문자열

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

내 솔루션으로 정수

 
var a = 15000000000000000000000001 
var b = 15000000000000000000000000 
a > b // return false and is wrong 
  • 변환 var에에

    1. 변환 var에 B 10

      제 질문은 발견 된 해결책이 올바른지 아니면 앞으로 문제가 생길 수 있습니까?

  • +0

    죄송합니다. 건설적이지 않아서 죄송 합니다만, 데이터 유형에 "그래, 뭐든간에"접근하는 자바 스크립트와 같은 언어에서 발생하는 문제의 종류가 아닙니다! – bazza

    +0

    그것은'00000001> 900' – perreal

    +0

    에 대해 얻고 자하는 것에 달려 있습니다. 제 변수는 0으로 시작하지 않습니다. 기본적으로 숫자지만, 자바 스크립트가 큰 숫자에 문제가있는 한 문자열로 변환해야합니다. –

    답변

    1

    여기 믿는 표준 연습은 다른 숫자에서 하나의 숫자를 뺀 다음 엡실론 값과 비교하는 것입니다.

    +0

    두 개의 int를 비교하는 경우 중 하나에 해당합니다. 그러나 OP의 해결책에 따르면 두 줄의 경우 길이가 가장 긴 것을 원하지만, 같은 경우 다른 것을 비교해보십시오. – damienc88