2016-01-24 4 views
1

Я новичок в javascript и действительно пытался найти решение, но я не знаю, как применить его к моему конкретному коду.Вывод значения parseInt в два десятичных знака?

У меня есть два поля полей на форме, которую я хочу использовать в качестве кредитного калькулятора. Таким образом, value1 - это «сумма кредита», значение2 - для «периода погашения». Таким образом, значение1 нужно разделить на value2, а затем ему нужно вывести его в идентификатор с именем #fullvalue, чтобы я мог показать значение суммы погашения в форме. Мой код ниже работает отлично, однако я не могу на всю жизнь получить правильное значение #fullvalue до двух знаков после запятой. Так что это показывает, как $ 79,50 вместо того что-то вроде $ 75,56789555

$(window).on('load', function() { 
$("form :input").change(function() { 
var value1 = $('form #value1').val(); 
var value2 = $('form #value2').val(); 
var fullvalue = parseInt(value1, 10)/parseInt(value2, 10); 
$('form #fullvalue').val(fullvalue); 
}); 
}); 
+0

'parseFloat ("75.56789555") toFixed (2). // 75.57' –

+0

Я использовал следующий '' Math.round ((value1/value2) * 100)/100'', не знал о parsefloat, спасибо. Добавьте его в качестве ответа. – seahorsepip

+0

Готово, без проблем - рад помочь :) –

ответ

2

Вы должны использовать parseFloat, как Вы желаете, неполные номера и использовать метод .toFixed для получения результата Вы желаете:

var value1 = $('form #value1').val(); //Value1 from form 
var value2 = $('form #value2').val(); //Value2 from form 
var fullvalue = parseInt(value1, 10)/parseInt(value2, 10); //Divide one from the other 
fullvalue = parseFloat(fullValue).toFixed(2); //Round the result and assign back to fullvalue variable (75.57) 
$('form #fullvalue').val(fullvalue); //write the rounded value into the form 

Это должно крутиться для вас.

+0

Спасибо, я прочитал о toFixed ранее, но не знал, как правильно применить его к моему коду. Я все еще немного запутался, потому что его все еще нужно хранить в id $ ('form #fullvalue'). Val (fullvalue); Итак, как бы я сделал это с последней строкой, которую вы добавили? Он округлен первым, прежде чем он будет сохранен, или он будет выполнен в одной строке ... или как это работает? Я очень новичок в javascript, так что это немного смущает меня ... – Shtarley

+0

Прокомментировал добавленную строку с моим ответом - это ясно? –

+0

Спасибо ОЧЕНЬ много – Shtarley

0

Лучшее решение включает использование метода toFixed. Для этого вам понадобится метод parseFloat.

parseFloat(number).toFixed(2) 

Чтобы преобразовать в 2-х знаков после запятой просто позвонить toFixed(2)

Вы также можете создать функцию, которая делает это самостоятельно.

function roundToDecimals(number,decimals){ 
    return Math.round(number * Math.pow(10,decimals))/Math.pow(10,decimals); 
} 

Затем вызвать функцию

roundToDecimals(42.545345,2) 
=> 42.54 
+0

Спасибо, но я действительно новичок в javascript, так что не понял, как это сделать в моем собственном коде. Я закодировал приведенный выше код в своем посте, используя учебники, поэтому я не знаю, что я делаю (но пытаюсь). – Shtarley

0

Вы можете использовать toFixed как этот

$(window).on('load', function() { 
$("form :input").change(function() { 
var value1 = $('form #value1').val(); 
var value2 = $('form #value2').val(); 
var fullvalue =  parseInt(value1.toFixed(2), 10)/parseInt(value2.toFixed(2), 10); 
$('form #fullvalue').val(fullvalue); 
}); 
}); 
+0

Это не будет работать так, как ожидалось. Например. значение1 = 75,25, значение2 = 89,23. 'parseInt (value1.toFixed (2), 10)/parseInt (value2.toFixed (2), 10) //0.8426966 ...' –

+0

Я не думаю, что это сработает ... Я мало что знаю о javascript, но вы добавили toFixed к отдельным значениям вместо значения после его вычисления .... поэтому я не думаю, что конечный результат будет точным. – Shtarley

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