올림, 반올림, 내림 함수
- 올림 - Math.ceil(숫자)
- 반올림 - Math.round(숫자)
- 내림 - Math.floor(숫자)
외우는 법
ceiling이 천장이라는 뜻이므로 실수의 소수점 부분을 올림해서 천장으로 올리는 함수라고 생각하면 된다.
round는 둥그렇게 다듬는 이미지를 생각하면 된다. 부족하면 더하고 넘치면 깎는 느낌으로.
floor는 버려서 바닥으로 보낸다는 이미지를 생각하면 된다.
예시
Math.ceil(50.66666) - 소수 부분을 올림해서 51
Math.round(50.6666) - 소수 부분을 반올림해서 51
Math.floor(50.6666) - 소수 부분을 버림해서 50
자릿수 지정
주의할 점은 세 함수 모두 기본적으로 실수를 소수점 아래를 남기지 않고 정수로 만든다는 사실이다.
따라서 자릿수를 지정하고 싶다면 10, 100 등을 곱하거나 나누어 소수점을 옮긴 다음 그 결과를 10, 100을 곱하거나 나눠 원래대로 되돌려준다.
예시
50.66666을 소수 둘째자리까지 나타내어 올림/반올림/내림
Math.ceil(50.66666 * 100) / 100 -> 50.67
Math.round(50.6666 * 100) / 100 -> 50.67
Math.floor(50.6666 * 100) / 100 -> 50.66
765를 십의 자리에서 반올림해서 800으로 만들기 -> Math.round(765 / 100) * 100
소수점 특정 자릿수까지 0 채우기 - toFixed()
예를 들어 DB에 영화 평점이 7.0567처럼 들어있다고 하자. 이것을 소수 첫째자리까지 나타내고 싶다.
그래서 Math.floor(평점 * 10) / 10 을 해서 화면에 보여주는 코드를 짰다. 그런데 결과를 보니 8.1234 하는 영화는 8.1로 맞게 나왔는데 7.0567처럼 소수 첫째자리가 0인 것들은 7 처럼 정수로 나온다. parseFloat()는 소용 없다. 문자열을 실수로 바꿔주는 함수이기 때문이다.
이럴 때 사용 할 수 있는 것이 toFixed() 메소드이다.
(Math.floor(평점 * 10) / 10).toFixed(1)을 하면 소수 첫째자리까지 0을 채워준다.
'숫자'.toFixed(4)를 하면 소수 아래의 4번째까지 비어있는 곳에 0을 채워줄 것이다.
예시1)
'123'.toFixed(2) -> 123.00 (O)
123.toFixed(2) -> error (X)
123.0.toFixed(2) -> 123.00 (O)
실수 형태(123.0)가 아닌 숫자에 적용할 때는 따옴표(')를 작성해야 한다.
예시2)
127.03.toFixed(3) -> 127.030
'Front-end > Javascript' 카테고리의 다른 글
[JS] 랜덤 숫자 생성법 이해하기 | Math.random() (0) | 2023.09.04 |
---|---|
[JS] Javascript에서 Enum 사용하기 (0) | 2022.08.19 |
[JS] onInput 이벤트 - 입력한 글자 실시간으로 화면에 출력하기 (0) | 2022.02.22 |
[JS] prototype 참고글 (0) | 2021.09.26 |
[JS] String 오브젝트에 굳이 toString()이 있는 이유 (0) | 2021.09.25 |