Что не так с моим простым математическим уравнением - PullRequest
1 голос
/ 04 июля 2019

Я пытаюсь создать простой калькулятор, который будет возвращать сумму налога с продаж плюс сумму после уплаты налога.Если я введу 80 долларов, а налог с продаж составит 7,5%, я должен вернуть сумму в 86 долларов, но вместо этого мне возвращают 806 долларов.Я не уверен, почему.

    //calculation
    var total = (itemCost + (itemCost * salesTax/100));


    total = Math.round(total) 

Ответы [ 3 ]

3 голосов
/ 04 июля 2019

вам нужно var total = (parseInt(itemCost) + (parseInt(itemCost) * salesTax/100));

2 голосов
/ 04 июля 2019

Дело в том, что когда вы получаете значение, это строка.Разобрать его как числовое значение, выполнив:

var salesTax = Number(document.getElementById("salesTax").value);
1 голос
/ 04 июля 2019

Когда вы получаете значения текстовых полей, у вас есть строки. Javascript делает много выводов типа, поэтому он почти работает. Ваше выражение переводится на:

(String) "80" + ((String) "80" * (int) 0,075)

(Строка) "80" + (int) 6

И теперь вызывается оператор String + (String, Any), который определяется как конкатенация строк. Поэтому вы получите «80» + «6» => «806».

Если вы, например, напишите: «80» * «1» + «80» * «7,5» / «100» вы действительно получите ожидаемый результат 86.

Но чтобы убедиться, что все работает должным образом, вам действительно следует проанализировать значения из строкового значения в числовое значение (с parseInt или parseFloat).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...