아하
검색 이미지
생활꿀팁 이미지
생활꿀팁생활
생활꿀팁 이미지
생활꿀팁생활
참신한해파리1
참신한해파리120.01.07

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

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의 소수점 이하 문자열 길이)