Программа на 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:12. |