Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Странно себя ведет арифметический оператор (https://javascript.ru/forum/project/52119-stranno-sebya-vedet-arifmeticheskijj-operator.html)

decross 04.12.2014 22:04

Странно себя ведет арифметический оператор
 
Добрый день!

Я только начал учиться программировать, поэтому вам может показаться, что вопрос очень глупый. Однако, мне не к кому обратиться, поэтому буду благодарен, если поможете разобраться.

Решил написать для начала простенькую программу расчета выплат по кредиту. Однако в расчете выплаты какая-то ошибка, поскольку цифры получаются совсем не те, которые ожидаются. Посмотрите, пожалуйста.

//Программа расчета процентов по кредиту
var credit = prompt("Введите размер вашего кредита"); 
var percentile = prompt("Введите ваш процент в годовых");
var term = prompt ("Введите количество месяцев по кредиту");

percentile = percentile/100;
var pereplata = credit*percentile;
var itog = credit+pereplata;
var vyplata = itog/term;
console.log ("Переплата по кредиту составит: " + pereplata + " руб.");
console.log ("Выплата каждый месяц составит: " + vyplata.toFixed(2) + " руб.");

Gvozd 04.12.2014 22:17

1) prompt умеет возвращать только строки
2) оператор + для двух чисел возвращает сумму
3) оператор + для двух операндов, хотя бы один из которых не число - приводит их к строке, и конкатенирует(склеивает)
"строка 1" + "строка 2" === "строка 1строка 2"
4) привести строку к числу перед суммированием можно рядом способов
Они описаны в справочнике, в частности на этом сайте

рони 04.12.2014 22:26

decross,
var .... = +prompt....

krutoy 05.12.2014 09:01

рони,
а как правильно преобразовать дробные, типа, 1/2? Я знаю, что эвалом можно, а можно еще как-то?

devote 05.12.2014 09:33

krutoy,
что ты имеешь ввиду под вопросом преобразовать? Преобразовать во что? или из чего?

decross 05.12.2014 11:40

Спасибо большое за подсказку. Пойду читать справочник.

krutoy 05.12.2014 12:13

devote,
Я имею в виду из строки , как в обычной сессии
console.log(1/2)
console.log(eval("1/2"))

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

рони 05.12.2014 13:03

krutoy,
:)
var str = "1/2";
 alert(new Function("return " + str)())


Часовой пояс GMT +3, время: 04:55.