javascript float 수치 에 정밀도 오류 해결 방법

오늘 문 제 를 발 견 했 습 니 다. javascript 에서 Float 수치 와 정밀도 가 정확 하지 않 습 니 다.
1. 텍스트 파일 test. txt 새로 만 들 기
2. 다음 코드 를 입력 하고 저장:
<HTML>
<Head>
<Script Language ="JavaScript">

alert(0.1+0.2 );

document. close();

</Script>
</Head>
</HTML>

 
3. test. txt 를 test. html 로 변경
4. 위 파일 을 브 라 우 저 로 열기
5. 튕 겨 나 온 결 과 는 0.3 이 아니 라 0. 3000000000004 입 니 다.
 
그래서 인터넷 에서 해결 방법 을 검색 했다. 많은 해결 방법 중에서 해결 방향 을 선택 했다. 수 치 를 정수 와 소수 두 부분 으로 나 누 어 각각 계산 하고 마지막 에 결 과 를 조립 했다.
 
결국 이런 결과 가 나 온 이 유 는 무엇 일 까?바 이 너 리 컴 퓨 팅, CPU 의 자릿수 와 관련 이 있 는 것 같 습 니 다. 구체 적 으로 깊이 있 는 이 유 는 나중에 깊이 연구 해 보 겠 습 니 다.만약 높 은 사람 이 지나 가면 아 끼 지 않 고 가르쳐 주시 면 저 는 매우 감사 하 겠 습 니 다!
 
먼저 해결 방향 을 코드 로 다음 과 같이 표현 한다.
 
 
<HTML>
<Head>
<Script Language ="JavaScript">

alert(Sum_TwoFloatNumber(0.1,0.2) );

document. close();

function Sum_TwoFloatNumber(val1,val2) {   
    var TotalNum;   
    val1 = val1 + '' ;   
    var sp_val1 = val1.split(".") ;   
       
    val2 = val2 + '' ;   
    var sp_val2 = val2.split(".") ;   
       
       
    if ((sp_val1.length==2) && (sp_val2.length==2)) {   
        //---           ---   
        TotalNum = TotalNum + 0 ;   
        TotalNum = parseFloat(sp_val1[0]) + parseFloat(sp_val2[0]) ;   
           
        var length1 = sp_val1[1].length;   
        var length2 = sp_val2[1].length;   
               
        var length;   
           
        if(length1>=length2){   
            length = length1;   
            sp_val2[1] = sp_val2[1]*Math.pow(10,length1 - length2);   
        }else if(length1<length2){   
            length = length2;   
            sp_val1[1] = sp_val1[1]*Math.pow(10,length2 - length1);   
        }   
          
        var temp_second_part = Number(sp_val1[1]) + Number(sp_val2[1]);   
           
        temp_second_part = temp_second_part/Math.pow(10,length);   
             
        TotalNum = TotalNum + temp_second_part;   
    }   
    else {   
        TotalNum = parseFloat(val1) + parseFloat(val2) ;   
    }   
    return TotalNum;   
  
}

</Script>
</Head>
</HTML>

 

좋은 웹페이지 즐겨찾기