그 해 자 바스 크 립 트 코드 에서 0.1, 0.2, 0.3 의 부동 소수점 반올림 오차 에 대해 이야기 합 니 다.
9806 단어 Number 데이터 형식IEEE754JS
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.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.")
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
IEEE754의 미묘한 수IEEE754의 수의 체계에는 +0.0 와 -0.0 의 2 개의 제로가 있습니다. 이것을 중복으로 넌센스로 보는 방향도 있지만, 예를 들면 다가 복소함수의 리만면의 컷 라인의 전후를 구별하는 등의 목적으로 필요하다고...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.