Я пытаюсь выполнить некоторые вычисления, но один из моих варов объединяет числа вместе вместо их добавления, вот мой код:
var pdfAround = parseFloat($('#direct_size_around').val());
var qtyAround = parseFloat($('#direct_qty_around').val());
var toothSize = parseFloat($('#direct_tooth_size').val());
var gearNum = parseFloat($('#gearNum').val());
var gearRepeat = parseFloat(toothSize * gearNum).toFixed(2);
var gapAround = parseFloat((gearRepeat / qtyAround) - pdfAround).toFixed(3);
var sizeAround = parseFloat(pdfAround + gapAround);
var repeatPlus = parseFloat(gearRepeat + 0.5).toFixed(2);
var repeatMinus = parseFloat(gearRepeat - 0.5).toFixed(2);
Когда я получаю результаты, все кажутся правильными, но var sizeAround нет, вместо 50 + 3.795 = 53.795 Я получаю 503.975
Я не очень разбираюсь в Javascript и считаю, что я не понимаю, как использовать parseFloat
этот вызов:
parseFloat(pdfAround + gapAround);
concats strings pdfAround
и gapAround
перед их разбором. Пытаться:
parseFloat(pdfAround ) + parseFloat(gapAround);
pdfAround
- это не строка
Это потому, что gapAround
является строкой и, следовательно, конкатенируется. Вы можете попробовать следующее
var sizeAround = pdfAround + parseFloat(gapAround);
pdfAround
- это не строка
Проблема toFixed()
с вашими вызовами toFixed()
parseFloat()
анализирует строку и возвращает число с плавающей запятой
toFixed()
преобразует число в строку с указанным числом десятичных знаков
Поэтому, когда вы это делаете:
var gapAround = parseFloat((gearRepeat / qtyAround) - pdfAround).toFixed(3);
Вы преобразуете результат parseFloat((gearRepeat/qtyAround) - pdfAround)
который является поплавком, в строку и сохраняет его в gapAround
Это означает, что:
var sizeAround = parseFloat(pdfAround + gapAround);
Будет операция конкатенации, а не добавление, поскольку pdfAround
- это float, но gapAround
- это строка.
Чтобы исправить это, необходимо toFixed()
все вызовы toFixed()
:
var pdfAround = parseFloat($('#direct_size_around').val());
var qtyAround = parseFloat($('#direct_qty_around').val());
var toothSize = parseFloat($('#direct_tooth_size').val());
var gearNum = parseFloat($('#gearNum').val());
var gearRepeat = toothSize * gearNum;
var gapAround = (gearRepeat / qtyAround) - pdfAround;
var sizeAround = pdfAround + gapAround;
var repeatPlus = gearRepeat + 0.5;
var repeatMinus = gearRepeat - 0.5;
toFixed()
возвращает String вместо числа.