2016-05-17 2 views
1

Hy guys, У меня есть случай, когда нужно округлить число до двух знаков после запятой. Я приведу пример и то, что я пробовал.Число округлений до двух знаков после запятой

Допустим, у меня есть 15.07567 Чтобы округлить я сделал:

price = Math.round(15.07567 * 100)/100; 

// и я получаю 15,08

Но это представляет собой проблемы, если у нас есть цифры, которые заканчиваются остроумие 0 (пример 15.10) и мы хотим два десятичных знака.

price = Math.round(15.10 * 100)/100; 

//15.1

Ммм, так что я пытался использовать toFixed()

price = Math.round(15.10 * 100)/100; 
total = price.toFixed(2); 

// Я получаю "15,10", это хорошо, но она возвращает строку, и которые могут представлять проблема в дальнейшем для меня, поэтому я попытался исправить это с помощью:

price = Math.round(15.10 * 100)/100; 
total = price.toFixed(2); 
Number(total) //or parseFloat(total) 

// Я получаю 15,1 и вокруг в кругу я иду?

+0

если его ноль JS падает ... вам нужно выбрать один. – JordanHendrix

+1

Umm, '15.10 == 15.1', если вы не хотите получить результат в строке. – SuperSaiyan

ответ

0

Как сказал Иордан. Когда JavaScript отображает номер, который он потеряет, я просто сохраню значение как есть, и когда вы его отобразите, запустите его через .toFixed (2), чтобы он отображался правильно. Или даже лучше, найдите форматировщик валют, так как это похоже на то, что вы хотите отобразить, и использовать его на стороне обзора.

Вот хороший сценарий формирования валюты.

Number.prototype.formatMoney = function(c, d='.', t=','){ 
    var n = this, 
    c = isNaN(c = Math.abs(c)) ? 2 : c, 
    d = d == undefined ? "." : d, 
    t = t == undefined ? "," : t, 
    s = n < 0 ? "-" : "", 
    i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", 
    j = (j = i.length) > 3 ? j % 3 : 0; 
    return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : ""); 
}; 

Затем вы можете использовать это ориентированные моды объекта с этим кодом:

price.formatMoney(2); 

Или, если вы хотите, чтобы указать, тысячи и десятичные разделители для Европы.

price.formatMoney(2, ',', '.'); 
+0

Спасибо, ребята. Думаю, это и есть путь. Sace мое значение для строки, и когда мне это нужно, просто отобразите его с помощью функции toFixed() –

+0

Нет проблем, я также написал сценарий форматирования валюты JS, который позаботится о правильном форматировании всего числа. –

0

Если вы хотите, чтобы показать 0 в праве, вам нужно представить число в строку ...

0

Всегда держите ваши номера, когда вы показываете им запустить их через toFixed, чтобы получить желаемое формат отображения, поэтому у вас будет готовое значение в строковом формате. Поскольку этот метод необходим и поэтому предназначен для отображения, функция возвращает готовую строку вместо числа.

Смежные вопросы