일상 프로그래밍에서 우리는 다양한 수치 연산을 처리하기 위해 다양한 프로그래밍 언어를 사용하는 경우가 많으며, 그중 JavaScript가 의심할 여지 없이 가장 널리 사용되는 언어입니다. 그러나 극단적인 경우 복잡한 수치 계산을 처리할 때 연산 결과의 정밀도가 떨어지는 상황이 발생할 수 있습니다. 그렇다면 왜 이런 일이 발생합니까? 계산 정밀도 손실을 방지하는 방법은 무엇입니까?
console.log(0.1 + 0.2); // 0.30000000000000004
바이너리는 0.1과 0.2를 정확하게 표현할 수 없기 때문에 JavaScript에서는 덧셈 결과가 부정확하고 소수점 뒤에 추가 숫자가 있습니다.
2.1 계산에 정수 사용
복잡한 연산을 수행할 때 소수를 정수로 변환하여 계산하고 마지막으로 결과를 소수로 변환할 수 있습니다. 예를 들어 다음 코드는 0.1과 0.2에 각각 10을 곱한 다음 결과를 더하고 최종적으로 결과를 10으로 나눌 수 있습니다.
console.log((0.1 * 10 + 0.2 * 10) / 10); // 0.3
2.2 toFixed() 함수 사용
JavaScript의 Number 유형은 toFixed() 메서드를 제공합니다. 숫자를 지정된 정밀도로 소수로 변환합니다(괄호 안에 있는 소수 자릿수는 유지됩니다). 예를 들어, 다음 코드에서 toFixed() 함수는 소수점 이하 두 자리를 유지하고 최종적으로 정밀도 0.30의 부동 소수점 숫자를 얻습니다.
console.log((0.1 + 0.2).toFixed(2)); // 0.30
2.3 정밀도 확장
정밀도 손실을 방지하기 위해 JavaScript의 작업 정확도를 높일 수 있습니다. 일반적인 접근 방식은 십진수를 정수로 변환한 다음 계산을 수행하는 것입니다. 또 다른 옵션은 JavaScript에서 BigNumber 라이브러리를 사용하는 것입니다. 이 라이브러리는 작업의 정확성을 크게 향상시킬 수 있는 고정밀 숫자 유형을 제공합니다. 예를 들어 다음 코드는 BigNumber 라이브러리를 사용하여 연산 정밀도 손실 문제를 해결할 수 있습니다.
var BigNumber = require('bignumber.js'); var x = new BigNumber("0.1"); var y = new BigNumber("0.2"); console.log(x.plus(y).toString()); // "0.3"
이 문서에는 JavaScript에서 연산 정밀도 손실의 원인과 일반적인 방지 방법이 요약되어 있습니다. 복잡한 수치 계산을 처리할 때 특정 문제를 주의 깊게 분석하고 적절한 방법을 채택하여 정확도 손실을 방지하고 프로그램의 정확성을 보장해야 합니다.
위 내용은 JavaScript 작업의 정밀도가 떨어지면 어떻게 되나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!