У меня проблемы с несколькими вычислениями в javascript. Целью этого расчета является генерация значения, когда пользователь нажимает на текстовое поле.Ошибка вычисления математики с Javascript
Например: 1 Стоимость килограмма стоит 32 цента для отправки в Америку, и пользователь хочет узнать, что будет стоить 10 кг, что составляет 3,20 доллара США. Для этого у меня есть следующий фрагмент яваскрипт кода:
function calculate(num) {
var weight = document.getElementById('weight'+num);
var price = document.getElementById('price'+num);
if(num == undefined || num == '' || num.length <= 0 || isNaN(weight.value) || isNaN(price.value)) return false;
if(num == 1) multiplyBy = 0.32;
if(num == 2) multiplyBy = 0.14;
if(num == 3) multiplyBy = 0.24;
if(num == 4) multiplyBy = 0.53;
var sum = parseInt(document.getElementById('weight'+num).value) * multiplyBy;
if(isNaN(sum)) return false;
price.value = sum;
}
Приведенные выше код работает прекрасно, однако, когда я обратный процесс (кто-то есть $ 3,20 и хочет, чтобы узнать, сколько К.Г. он/она может поставляться с этим (который 10кг) сценарий возвращает: 9.375KG
следующий код используется для этого расчета:
function reverse(num) {
var weight = document.getElementById('weight'+num);
var price = document.getElementById('price'+num);
if(num == undefined || num == '' || num.length <= 0 || isNaN(weight.value) || isNaN(price.value)) return false;
if(num == 1) divideBy = 0.32;
if(num == 2) divideBy = 0.14;
if(num == 3) divideBy = 0.24;
if(num == 4) divideBy = 0.53;
var sum = parseInt(document.getElementById('price'+num).value)/divideBy;
if(isNaN(sum)) return false;
weight.value = sum;
}
Я честно не понять, почему это не удается, было бы весьма признателен, если кто-то может помогите мне с этим.
Это связано не столько с ошибками с плавающей запятой, сколько с синтаксическим анализом float как int –
Возможно, также урок в том, почему использование целых чисел (так 1c == 1, а не 1c == 0.01) для валютных расчетов часто является путь. –
Читайте слишком быстро. Я удалю его. – duffymo