Javascript에서 부동 소수점 수의 곱 연산을 수행할 때 소수점 이하 자릿수가 여러 개 나타날 수 있습니다.
부동 소수점 숫자는 계산 전에 먼저 이진수로 변환되기 때문입니다. 그러나 이진수 인코딩 후에 일부 소수는 무한 루프에 나타나며 이는 다른 프로그래밍 언어에서도 마찬가지입니다. . 비슷한 질문입니다.
이유에 대한 설명은 Baidu에서 알려져 있습니다.
예: find 1038.1-1000
1038.1=10000001110.0001100110011001100110011001100110011001100....
1 000 =1111101000
1038.1 변환 바이너리는 무한반복소수이고 1100은 순환구간이므로 대략적인 값만 취할 수 있습니다. 브라우저 버전이 높으면 toFixed() 메서드를 사용하여 반올림할 수 있습니다. 숫자를 지정된 소수점 이하 자릿수로 표시합니다.
해결책: 유지할 소수 자릿수(예: 4)에 따라 곱을 계산할 때 먼저 (10^4)를 곱한 다음 계산 결과를 (10^4)로 나누고, 마지막으로 결과를 나눕니다. 대략적인 값을 취합니다. Math.round