어제 JS를 사용하여 프런트 엔드 부동 소수점 숫자를 계산할 때 다음을 발견했습니다.
0.05 1.08=1.1300000000000001
온라인에서 이런 종류의 버그가 존재하는지 확인했는데 숫자를 제어하는 것 외에는 좋은 방법이 없습니다. (전문가들이
다른 아이디어를 제안할 수 있기를 바랍니다.)
그래서 긴급한 개발 요구사항을 해결하기 위해 소수점 자릿수를 조절하는 JS 메소드를 작성했습니다
//소수 제어, 반올림 가능
function Fractional(n) {
//유지할 소수 자릿수
var bit = 2;
//소수점을 추가한 후 1자리 확장
//숫자를 문자열로 변환
n = n.toString()//소수점 가져오기 point position
var point = n.indexOf('.')
//n의 길이가 예약된 숫자의 길이보다 깁니다
if (n.length > point bit) {
//예약된 십진수가 4보다 큰지, 4보다 큰지 carry
if (parseInt(n.substring(point bit, point bit 1)) > 4) {
return n.substring(0 , 포인트) "." (parseInt(n.substring(포인트 1, 포인트 비트)) 1)
}
else {
return n.substring(0, 포인트) n.substring(포인트, 포인트 비트)
}
}
n을 반환
}