그 해 자 바스 크 립 트 코드 에서 0.1, 0.2, 0.3 의 부동 소수점 반올림 오차 에 대해 이야기 합 니 다.

우선 코드 를 봅 시다.
console.log(0.1+0.2);	//0.30000000000000004
console.log(0.3-0.2);	//0.09999999999999998
console.log(0.3-0.1);	//0.19999999999999998

왜 이 세 개가 콘 솔 에서 출력 하 는 값 이 이 렇 습 니까?
  • 이 말 은 우선 ECMAScript (JS 의 3 대 구성 부분: ES + DOM + BOM) 기본 데이터 형식 중의 Number 유형 부터 말하자면, 이러한 유형 은 IEEE 754 형식 으로 정수 와 부동 소수점 수 치 를 나타 낸다.
  • 도 바로 이 IEEE 754 형식 이기 때문에 상기 JS 코드 는 부동 소수점 수치 에 대한 계산 에 반올림 오차 가 발생 할 수 있 습 니 다. 이것 은 IEEE 754 수 치 를 바탕 으로 하 는 부동 소수점 계산 을 사용 하 는 통폐 입 니 다. ECMAScript 는 유일한 것 이 아니 라 이 형식 을 사용 하 는 다른 언어 (C 언어 등) 에 도 문제 가 존재 합 니 다.
  • IEEE 2 진 부동 소수점 산술 표준 (IEEE 754) 에 대한 소개 편폭 이 비교적 깁 니 다. 여러분 이 이 기준 을 자세히 알 고 싶다 면 여 기 를 클릭 하 십시오.
  • 우 리 는 오늘 어떤 계산 상황 에서 이 반올림 오차 가 발생 할 지 말 해 보 자. 다음은 몇 가지 상황 (그러나 이것 뿐만 이 아니다) 으로 나 뉜 다.
  • 첫 번 째, 0.3, 0.2, 0.1 사이 에 어떤 상황 에서 반올림 오차 가 발생 합 니까?
    console.log(0.1+0.2);	//0.30000000000000004
    console.log(0.3-0.2);	//0.09999999999999998
    console.log(0.3-0.1);	//0.19999999999999998
    console.log(0.1-0.3);	//-0.19999999999999998
    console.log(0.2-0.3);	//-0.09999999999999998
    

    그러나 다음 상황 에 서 는 오차 가 발생 하지 않 습 니 다.
    console.log(0.1-0.2);	//-0.1
    console.log(0.2-0.1);	//0.1
    

    두 번 째, 계산 을 통 해 0.3, 0.2, 0.1 중의 한 값 을 얻 을 때:
    console.log(0.7-0.6);	//0.09999999999999998
    console.log(0.8-0.6);	//0.20000000000000007
    console.log(0.9-0.6);	//0.30000000000000004
    
    console.log(1.1-1);		//0.10000000000000009
    console.log(1.2-1);		//0.19999999999999996
    console.log(1.3-1);		//0.30000000000000004
    
    console.log(1.5-1.4);	//0.10000000000000009
    console.log(1.6-1.4);	//0.20000000000000018
    console.log(1.7-1.4);	//0.30000000000000004
    

    다음 상황 에 서 는 오차 가 발생 하지 않 습 니 다.
    console.log(0.1-0);		//0.1
    console.log(0.2-0);		//0.2
    console.log(0.3-0);		//0.3
    

    물론 여러분 이 계속 테스트 를 한다 면 여러 가지 다른 상황 이 있 을 것 입 니 다. 다음 에 이런 반올림 오차 가 발생 할 수 있 을 때 이 를 하나의 표현 식 으로 예상 결과 와 비교 하지 않도록 하 겠 습 니 다.
    if( a + b == 0.3){	//        
    	alert("You got 0.3.")
    }
    

    좋은 웹페이지 즐겨찾기