자바스크립트 소수점 자리수 문제

2020. 01. 07. 02:16
const str = '30000.495999999999999223'
const num = parseFloat(str)

이렇게 하면 num 이 숫자 30000.495999999999999223이 나와야 할것 같은데

30000.496 이란 값으로 반올림 됩니다.

왜이런걸까요?ㅠㅠ

공유하고 돈벌기 ♥︎

총 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)

2020. 01. 07. 05:19
26
중소기업

간단히 알려드립니다.

소수점 이하 자리수를 구하여

.toFixed 를 이용하시면 되겠습니다.

const str = '30000.495999999999999223'

const num = parseFloat(str).toFixed(str의 소수점 이하 문자열 길이)

2020. 01. 08. 00:24
16