자바스크립트에서 제공하는 "Math.round()" 함수는 정수 단위의 반올림만 지원 합니다.
따라서 소수점 특정 자리에서 반올림하려면, 소수점을 이동시킨 후 반올림하고 다시 원래 위치로 되돌리는 방식으로 처리해야 합니다.
기본적인 반올림 방법
소수점 셋째 자리에서 반올림하여 둘째자리까지 표현하려면 다음과 같이 할 수 있습니다.
const value = 1.23567;
const rounded = Math.round(value * 100) / 100;
console.log(rounded); // 1.24
- "value * 100" : 소수점 세 번째 자리를 정수 반올림 기준 위치로 이동
- "Math.round()" : 반올림 수행
- "/ 100" : 원래 소수점 위치로 복원
부동소수점 오차를 고려한 안전한 방법
자바스크립트는 부동소수점 연산 특성상 미세한 오차가 발생할 수 있습니다. 그래서 가끔 실수가 소수점 뒤로 엄청 많은 숫자가 표시되는 경우가 발생합니다. 이를 방지하기 위해서 반올림을 이용하긴 합니다.
예를 들어 "1.005"와 같은 값은 기대한 결과와 다르게 처리될 수 있습니다. (예: 1.0050000000000001)
이를 방지하기 위해 "Number.EPSILON"을 활용하는 방법을 권장합니다.
const value = 1.005;
const rounded = Math.round((value + Number.EPSILON) * 100) / 100;
console.log(rounded); // 1.01
이 방식은 실무 환경에서 보다 안정적인 반올림 결과를 제공합니다.
항상 소수점 두 자리까지 표시해야 하는 경우
계산 결과를 화면에 출력할 때 소수점 두 자리를 고정 해야 한다면 "toFixed()"를 사용하는 것이 보다 좋은 결과를 얻을 수 있습니다.
const value = 1.2;
const formatted = (Math.round(value * 100) / 100).toFixed(2);
console.log(formatted); // "1.20"
- "toFixed(2)"는 문자열을 반환
- UI 출력이나 보고서용 데이터 표현에 적합
맺는말
정리해 보면 다음과 같습니다.
- 계산용으로 소수점 셋째자리에서 반올림 처리 → "Math.round(value * 100) / 100"
- 부동소수점 오차 보정 → "Number.EPSILON" 활용
- 보고서 표시 등 소수점 2자리 고정 → ".toFixed(2)"
이와 같은 방식으로 자바스크립트에서 소수점 반올림을 처리하시면 보다 정확하고 안정적인 결과를 얻으실 수 있습니다.
상황에 맞게 계산용과 표시용 방식을 구분하여 사용하시면 되겠습니다.
728x90
반응형
'프로그래밍 > 웹 관련' 카테고리의 다른 글
| [web] 브라우저에서 드래깅 선택을 막는 방법 (0) | 2025.11.26 |
|---|---|
| [웹] HTML 테이블에서 내용 변경과 관계없이 셀 크기를 고정하는 방법 (0) | 2025.01.15 |
| [javascript] 올바른 IP 주소인지 확인하는 방법 (0) | 2024.06.25 |
| [javascript] 배열을 모두 비우는 방법 (0) | 2024.06.12 |
| [js] vite - "Two output files share the same path" 오류 문제 (0) | 2024.06.11 |