해당하는 경우 항상 반올림하여 소수점 이하 2 자리를 표시하도록 숫자 형식을 지정하고 싶습니다.
예 :
number display
------ -------
1 1.00
1.341 1.34
1.345 1.35
나는 이것을 사용했다 :
parseFloat(num).toFixed(2);
그러나이 아닌으로 표시 1
됩니다 .1
1.00
답변
(Math.round(num * 100) / 100).toFixed(2);
라이브 데모
이 점에 유의 반올림 입력이 때문에, 2 진수 곳으로 1.346
돌아갑니다 1.35
.
답변
Number(1).toFixed(2); // 1.00
Number(1.341).toFixed(2); // 1.34
Number(1.345).toFixed(2); // 1.34 NOTE: See andy's comment below.
Number(1.3450001).toFixed(2); // 1.35
답변
이 답변 은 실패합니다 value = 1.005
.
더 나은 해결책으로 지수 표기법으로 표시된 숫자를 사용하여 반올림 문제를 피할 수 있습니다.
Number(Math.round(1.005+'e2')+'e-2'); // 1.01
@Kon이 제안한 깔끔한 코드와 원저자 :
Number(Math.round(parseFloat(value + 'e' + decimalPlaces)) + 'e-' + decimalPlaces)
toFixed()
소수점을 유지하기 위해 끝에 추가 할 수 있습니다 ( 예 :: 1.00
문자열로 반환 됨).
Number(Math.round(parseFloat(value + 'e' + decimalPlaces)) + 'e-' + decimalPlaces).toFixed(decimalPlaces)
크레딧 : 반올림 십진수 자바 스크립트
답변
var num = new Number(14.12);
console.log(num.toPrecision(2));//outputs 14
console.log(num.toPrecision(3));//outputs 14.1
console.log(num.toPrecision(4));//outputs 14.12
console.log(num.toPrecision(5));//outputs 14.120
답변
가장 정확한 반올림을 위해 다음 함수를 작성하십시오.
function round(value, decimals) {
return Number(Math.round(value +'e'+ decimals) +'e-'+ decimals).toFixed(decimals);
}
소수점 이하 두 자리로 반올림하는 데 사용하십시오.
console.log("seeked to " + round(1.005, 2));
> 1.01
Razu , 이 기사 및 MDN의 Math.round 참조 덕분 입니다.
답변
최신 브라우저의 경우 다음을 사용하십시오 toLocaleString
.
var num = 1.345;
num.toLocaleString(undefined, { maximumFractionDigits: 2, minimumFractionDigits: 2 });
소수 구분 기호 를 제어하려면 로케일 태그를 첫 번째 매개 변수로 지정하십시오 . 도트의 경우 예를 들어 영어 미국 로캘을 사용하십시오.
num.toLocaleString("en-US", { maximumFractionDigits: 2, minimumFractionDigits: 2 });
이것은 다음을 제공합니다.
1.35
유럽의 대부분의 국가는 쉼표를 소수점 구분 기호로 사용하므로 스웨덴어 / 스웨덴 로케일을 사용하는 경우 :
num.toLocaleString("sv-SE", { maximumFractionDigits: 2, minimumFractionDigits: 2 });
그것은 줄 것이다 :
1,35