Форматирование числа с точностью до двух десятичных знаков в 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>

Другие вопросы по тегам