자바스크립트 소수점 자리수 문제
const str = '30000.495999999999999223'
const num = parseFloat(str)
이렇게 하면 num 이 숫자 30000.495999999999999223이 나와야 할것 같은데
30000.496 이란 값으로 반올림 됩니다.
왜이런걸까요?ㅠㅠ
55글자 더 채워주세요.
2개의 답변이 있어요!
자바스크립트의 Number 은 기본적으로 15자리 이상의 big Number 를 제공하지않습니다.
자동적으로 반올림등 내부처리를 거쳐서 할당한 변수의 값이 변경되며
별도의 복잡한 산술처리를 전처리 하지않는이상 JS를 활용한 큰 숫자의 계산처리는 보통 추천드리지않습니다.
JAVA 등에는 BigInt 등에 대한 보다 상세하고 방대한 라이브러리가 제공됩니다.
다만 꼭 JS로만 해야한다면 비슷한 라이브러리가 몇가지 있긴합니다.
https://mikemcl.github.io/big.js/
https://www.npmjs.com/package/bigfloat
참고로 소수점이 아니라 정수형만 사용하셔도 되는 경우는 BigInt 라는 자료형이 추가되어 간단하긴합니다.
var str = '30000' var num = BigInt(str) console.log(num)간단히 알려드립니다.
소수점 이하 자리수를 구하여
.toFixed 를 이용하시면 되겠습니다.
const str = '30000.495999999999999223'
const num = parseFloat(str).toFixed(str의 소수점 이하 문자열 길이)