누군가 js 질문을 했습니다:
var i = 0.07;
var r = i*100;
alert(r);
왜 결과가 7.0000000000000001인가요?
정보를 확인해보니 실제로는 변수가 저장될 때 숫자형과 부동소수점 유형의 구분은 없으나 동일하게 부동 소수점으로 저장됩니다. JavaScript는 IEEE 754-2008 표준에 의해 정의된 64비트 부동 소수점 형식을 사용하여 IEEE 754의 정의에 따라: http://en.wikipedia.org/wiki/IEEE_754-2008
십진수64에 해당하는 정수는 10이고 소수 부분의 길이는 16이므로 기본 계산 결과는 "7.0000000000000001"입니다. 마지막 소수가 0이면 유효한 숫자 플래그로 1을 사용합니다.
마찬가지로 1/3의 결과는 0.3333333333333333이 되어야 한다고 상상할 수 있습니다.
그럼 이 값을 어떻게 수정하나요?
다음 방법을 사용할 수 있습니다.
1.parseInt
var r4=parseInt(i*100)
2. .round var r2=Math.round((i*100)*1000)/1000;
위 두 가지 방법 모두 7을 얻을 수 있습니다.
첨부된 내용은 다음과 같습니다. 전체 테스트 코드:
🎜>
테스트 스크립트