2015-02-27 4 views
1

Как я могу сделать результат следующей суммы равным 2 десятичным знакам?Вычислить всего 2 разных переменных до 2 знаков после запятой

114.95 + 6.95 = 121.90 

Это то, что я пробовал, но результат этого кода 114.956.95

var Bezorgkosten = this.options[e.target.selectedIndex].value; 
var Subtotaal = <?= $l_TotaalPrijs ?>; 
var Totaalkosten = parseFloat(Subtotaal).toFixed(2) + parseFloat(Bezorgkosten).toFixed(2); 
$('.bezorgkosten').html(Bezorgkosten); 
$('.totaalkosten').html(Totaalkosten); 

Я не знаю, почему он не рассчитывает? Что я делаю не так?

ответ

1

Проблема заключается в том, что toFixed() возвращает строку, а это значит, что + становится конкатенацией вместо добавления. Вам нужно использовать parseFloat(), выполнить расчет, а затем использовать toFixed() перед показом значений. Попробуйте это:

var Bezorgkosten = this.options[e.target.selectedIndex].value; 
var Subtotaal = <?= $l_TotaalPrijs ?>; 
var Totaalkosten = parseFloat(Subtotaal) + parseFloat(Bezorgkosten); 
$('.bezorgkosten').html(Bezorgkosten.toFixed(2)); 
$('.totaalkosten').html(Totaalkosten.toFixed(2)); 

Example fiddle

+0

если я использую эту переменную 'var Bezorgkosten = 5; var Subtotaal = 10; ' он работает , если я использую эти переменные ' var Bezorgkosten = this.options [e.target.selectedIndex] .value; var Subtotaal = ; ' Это не работает – Erwin

+0

Что это за значения? Можете ли вы предоставить фактический результат. –

+0

Я понял! '' делает его строкой, поэтому нужно также анализировать ее с помощью float 'parseFloat ()' – Erwin

0

toFixed() конвертировать поплавки строки, поэтому он присоединяет свои ценности вместо того, чтобы вашу сумму, вы должны использовать его после того:

var Totaalkosten = parseFloat(Subtotaal) + parseFloat(Bezorgkosten); 
Totaalkosten = Totaalkosten.toFixed(2); 
Смежные вопросы