Программа на JS
Всем привет. Это моя первая программа. По идеи это программа которая считает сумму накоплений с учетом банковских процентов, которые выплачиваются каждый год. И я кладу каждый месяц одну сумму. Вопрос очень просто почему после выполнения full = 0?
var years = prompt("Сколько лет копим?)"); var prec = prompt("А сколько % в год?"); var income = prompt("Сколько откладываешь каждый месяц?"); var num = 12; var full = 0; months=years*num; console.log("Получилось всего " + years + " лет и " + months + " месяцев.") for (var month = 0; month == months; month++) { if (month % num == 0) { full = full +income + (full*prec/100); } else { full = full + income; } } console.log("Всего накопленно =" + full); |
month <= months
|
Некоторые ошибки:
1. prompt() возвращает строку, даже если вобьют число, то тип переменной всё равно будет строковым. Для приведения к числу используй parseInt() и parseFloat(). Прочитай про них подробнее. 2. Переменная months объявлена без var. Если будешь так и дальше делать, то в крупных приложениях горя хлебнёшь с отладкой. 3. Ну и как уже выше намекнул Octane, у тебя ошибка в условии цикла. |
Кроме parseInt и parseFloat стоит почитать про варианты использования конструктора Number, про унарный плюс и про JSON.parse. Это не просто разные способы одного и того же, у них разное поведение в некоторых ситуациях, потому выбери самое подходящее.
Вообще-то арифметические операции над строками преобразуют их в числа и можно это не замечать пока где-то не появится бинарный плюс который для строк является конкатенацией. Так что результатом внезапно окажется набор из цифр и точек начинающийся с нуля. |
Nadir,
<script> var years = Number( prompt("Сколько лет будем копить?",2) ); var prec = Number( prompt("Сколько % дает банк?",10) ); var income = Number( prompt("Сколько будешь откладывать каждый месяц?",100) ); var num = 12; var full = 0; months=years*num; document.write("Всего получилось " + years + " лет и " + months + " месяцев и по " + prec + "% каждый год.<br>") ; for (var month = 1; month <= months; month++) { full += income document.write(month + " " +full.toFixed(2)+"<br>") if (month % num == 0) { full = full + (full*prec/100); document.write("12 months done! " +full.toFixed(2)+ "<br>") } } document.write("Всего скопленно =" + full.toFixed(2)); </script> |
Часовой пояс GMT +3, время: 16:46. |