Форматирование числа с точностью до двух десятичных знаков в JavaScript
У меня есть эта строка кода, которая округляет мои числа до двух десятичных знаков. Но я получаю такие числа: 10,8, 2,4 и т. Д. Это не мое представление о двух десятичных знаках, так как я могу улучшить следующее?
Math.round(price*Math.pow(10,2))/Math.pow(10,2);
Я хочу цифры как 10.80, 2.40 и т. Д. Использование JQuery хорошо для меня.
34 ответа
/*Due to all told stuff. You may do 2 things for different purposes:
When showing/printing stuff use this in your alert/innerHtml= contents:
YourRebelNumber.toFixed(2)*/
var aNumber=9242.16;
var YourRebelNumber=aNumber-9000;
alert(YourRebelNumber);
alert(YourRebelNumber.toFixed(2));
/*and when comparing use:
Number(YourRebelNumber.toFixed(2))*/
if(YourRebelNumber==242.16)alert("Not Rounded");
if(Number(YourRebelNumber.toFixed(2))==242.16)alert("Rounded");
/*Number will behave as you want in that moment. After that, it'll return to its defiance.
*/
Это очень просто и работает так же, как и любой другой:
function parseNumber(val, decimalPlaces) {
if (decimalPlaces == null) decimalPlaces = 0
var ret = Number(val).toFixed(decimalPlaces)
return Number(ret)
}
Поскольку toFixed() может вызываться только для чисел, и, к сожалению, возвращает строку, это делает весь анализ для вас в обоих направлениях. Вы можете передать строку или число, и вы получите номер обратно каждый раз! Вызов parseNumber(1.49) даст вам 1, а parseNumber(1.49,2) даст вам 1,50. Так же, как лучшие из них!
Я нашел очень простой способ, который решил эту проблему для меня и может быть использован или адаптирован:
td[row].innerHTML = price.toPrecision(price.toFixed(decimals).length
100% работает!!! Попытайся
<html>
<head>
<script>
function replacePonto(){
var input = document.getElementById('qtd');
var ponto = input.value.split('.').length;
var slash = input.value.split('-').length;
if (ponto > 2)
input.value=input.value.substr(0,(input.value.length)-1);
if(slash > 2)
input.value=input.value.substr(0,(input.value.length)-1);
input.value=input.value.replace(/[^0-9.-]/,'');
if (ponto ==2)
input.value=input.value.substr(0,(input.value.indexOf('.')+3));
if(input.value == '.')
input.value = "";
}
</script>
</head>
<body>
<input type="text" id="qtd" maxlength="10" style="width:140px" onkeyup="return replacePonto()">
</body>
</html>