프로그래밍 언어/HTML,CSS,JS

JavaScript에서 정확히 두 개의 소수로 숫자 서식 지정

Rateye 2021. 10. 14. 12:18
728x90
반응형
질문 : JavaScript에서 정확히 두 개의 소수로 숫자 서식 지정

내 숫자를 소수점 이하 두 자리로 반올림하는 코드 줄이 있습니다. 그러나 나는 다음과 같은 숫자를 얻습니다 : 10.8, 2.4 등. 이것들은 소수점 두 자리에 대한 나의 생각이 아니므로 어떻게 다음을 개선 할 수 있습니까?

Math.round(price*Math.pow(10,2))/Math.pow(10,2);

10.80, 2.40 등과 같은 숫자를 원합니다. jQuery를 사용해도 괜찮습니다.

답변

고정 소수점 표기법을 사용하여 숫자를 포맷하려면 toFixed 메서드를 사용하면됩니다.

(10.8).toFixed(2); // "10.80"

var num = 2.4;
alert(num.toFixed(2)); // "2.40"

toFixed() 는 문자열을 반환합니다.

중요 : toFixed는 시간의 90 %를 반올림하지 않고 반올림 된 값을 반환하지만 대부분의 경우 작동하지 않습니다.

예를 들면 :

2.005.toFixed(2) === "2.00"

업데이트:

Intl.NumberFormat 생성자를 사용할 수 있습니다. ECMAScript 국제화 API 사양 (ECMA402)의 일부입니다. IE11을 포함하여 꽤 좋은 브라우저 지원을 제공 하며 Node.js에서 완벽하게 지원됩니다 .

 
const formatter = new Intl.NumberFormat('en-US', {
   minimumFractionDigits: 2,      
   maximumFractionDigits: 2,
});

console.log(formatter.format(2.005)); // "2.01"
console.log(formatter.format(1.345)); // "1.35"

또는 내부적으로 Intl API를 toLocaleString 메서드를 사용할 수 있습니다.

const format = (num, decimals) => num.toLocaleString('en-US', {
   minimumFractionDigits: 2,      
   maximumFractionDigits: 2,
});


console.log(format(2.005)); // "2.01"
console.log(format(1.345)); // "1.35"

이 API는 천 단위 구분 기호, 통화 기호 등과 같은 다양한 형식 지정 옵션을 제공합니다.

출처 : https://stackoverflow.com/questions/1726630/formatting-a-number-with-exactly-two-decimals-in-javascript
728x90
반응형