Javascript математика присоединяется, а не добавляется

1

Я пытаюсь выполнить некоторые вычисления, но один из моих варов объединяет числа вместе вместо их добавления, вот мой код:

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

  • 0
    Это потому, что toFixed() возвращает String вместо числа.
Теги:

3 ответа

1
Лучший ответ

этот вызов:

 parseFloat(pdfAround + gapAround);

concats strings pdfAround и gapAround перед их разбором. Пытаться:

parseFloat(pdfAround ) + parseFloat(gapAround);
  • 1
    pdfAround - это не строка
1

Это потому, что gapAround является строкой и, следовательно, конкатенируется. Вы можете попробовать следующее

var sizeAround = pdfAround + parseFloat(gapAround);
  • 0
    pdfAround - это не строка
  • 0
    @explv - Мой плохой - Неправильная копия. Это был разрыв вокруг. Я исправил. Благодарю.
1

Проблема 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;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню