항상 소수점 2자리를 표시하는 형식 번호

가능한 경우 소수점 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); 

라이브 데모

var num1 = "1"; document.getElementById('num1').innerHTML = (Math.round(num1 * 100) / 100).toFixed(2);
var num2 = "1.341"; document.getElementById('num2').innerHTML = (Math.round(num2 * 100) / 100).toFixed(2);
var num3 = "1.345"; document.getElementById('num3').innerHTML = (Math.round(num3 * 100) / 100).toFixed(2);
span {
border: 1px solid #000;
margin: 5px;
padding: 5px; }
<span id="num1"></span> <span id="num2"></span> <span id="num3"></span>

소수점 이하 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 

document.getElementById('line1').innerHTML = Number(1).toFixed(2); document.getElementById('line2').innerHTML = Number(1.341).toFixed(2); document.getElementById('line3').innerHTML = Number(1.345).toFixed(2); document.getElementById('line4').innerHTML = Number(1.3450001).toFixed(2);
<span id="line1"></span> <br/> <span id="line2"></span> <br/> <span id="line3"></span> <br/> <span id="line4"></span>




답변은 다음과 같은 경우에 실패합니다.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) 

크레딧: JavaScript에서 소수점 반올림




최신 브라우저의 경우 다음을 사용합니다.

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




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