javascript_javascript 스킬의 float 연산 정밀도 분석 예시

WBOY
풀어 주다: 2016-05-16 18:20:49
원래의
1251명이 탐색했습니다.

누군가 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을 얻을 수 있습니다.
첨부된 내용은 다음과 같습니다. 전체 테스트 코드:
코드 복사 코드는 다음과 같습니다.

🎜>
테스트 스크립트

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿