WHAT I LEARNED/JavsScript

정수일 땐 정수만, 소수점일때는 소수점자리 표현하는 방법

보니bonnie 2023. 9. 15. 16:02
728x90

종종 요청사항 중에 소수점 n번째자리까지 표현해주세요~하는게 있다.

단순하게 toFixed(n)를 사용하면 쉽게 해결할 수 있지만, 문제는 50, 15같은 정수형태의 숫자들도 50.00, 15.00으로 나온다는것이었다.

단순하게 조건문으로 해결할 생각만 하고 있었는데 parseFloat을 이용하면 손쉽게 구현할 수 있다고 한다.

parseFloat(NUMBER.toFixed(n))

NUMBER 자리에 원하는 숫자나 숫자가 담긴 변수를 넣으면 10,20같은 정수일때는 정수만, 1.456같이 소수점일 때는 n번째 자리수까지 표현된다.

NUMBER.toFixed(n)을 하면, n번째 이하의 자릿수에서 반올림하고 문자열 형태로 반환한다.

그리고 parseFloat()은 문자열을 숫자로 변환하는 함수인데, 이 때 자바스크립트는 문자열에서 숫자로 변환시 불필요한 0을 삭제하게 되므로 자연스럽게 불필요한 0이 사라지고 정수만 표현된다.

cf. JavaScript가 숫자를 표현하는 규칙

Leading Zeros (선행 0): 문자열의 맨 앞에 있는 0은 숫자의 시작을 나타내는데 사용됩니다. 따라서 이러한 선행 0은 무시됩니다.예를 들어, "0123"과 같은 문자열은 숫자 123으로 해석됩니다. 선행 0은 123을 나타내는 데 아무런 영향을 미치지 않습니다.
Trailing Zeros (마지막 0): 숫자의 소수 부분에서 마지막에 있는 0은 종종 생략됩니다.예를 들어, "5.00"과 같은 문자열은 숫자 5로 해석됩니다. 마지막의 0들은 숫자의 정확도에 아무런 영향을 미치지 않으므로 제거됩니다.

https://hi098123.tistory.com/184

 

JS) toFixed() 1.0* => 1 (소수가 0일때 없애기)

문자로 보고 정규식이나 split if문등을 이용해서 처리하려할수도 있을것이다. 소수점아래 0을 버리기에는 다시 float로 처리하면 사라진다. parseFloat(val.toFixed(2)); val 이 만약 1.0002 였다면, val.toFixed(

hi098123.tistory.com

 

728x90