2014-01-10 4 views
-1
var money = prompt("Enter an amount of money"); 
money = parseFloat(money); 
var months = prompt("Enter how long you will be investing for in months"); 
months = parseInt(months); 
months = Math.round(months); 
var interest = prompt("Enter an interest rate you would like to test your investment at"); 
interest = parseFloat(interest); 
console.log(months); 

Почему этот код округляет месяцы независимо от того, что? Что мне делать по-другому?Почему этот код не округляет числа должным образом

+3

Потому что вы усечение месяцев, когда вы говорите 'ParseInt (месяцы)'? – cHao

+0

Duplicate, есть много ответов на это: http://stackoverflow.com/questions/7342957/how-do-you-round-to-1-decimal-place-in-javascript/7343013#7343013 – jcollum

+0

RTFM - https: //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt. «parseInt усекает числа до целых значений». – j08691

ответ

2

Функция parseInt преобразует число в целое число, которое не поддерживает дробные числа (десятичные числа).

months = parseInt(months); 
months = Math.round(months); 

Используйте parseFloat здесь вместо:

months = parseFloat(months); 
months = Math.round(months); 
0

Зачем вам нужно округлить ИНТ в первую очередь? Это всегда должно быть целое число, не так ли?

Тем не менее, никогда не используйте parseInt без указания также десятичную, что в вашем случае должно быть 10.

months = parseInt(months, 10); 
+0

Я тоже был немного брошен этим, но кажется, что он должен позволять вводить дробные месяцы. Только так этот вопрос имеет смысл. Странный. – crush

+0

'Всегда указывайте этот параметр, чтобы устранить недоразумение читателя и гарантировать предсказуемое поведение. Различные реализации приводят к различным результатам, когда рексикс не указан. ' – crush

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