Javascript数学正在加入而不是添加

时间:2018-05-04 10:09:52

标签: javascript

我正在尝试运行一些计算但是我的一个变量加入数字而不是添加它们,这是我的代码:

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

3 个答案:

答案 0 :(得分:1)

这是因为gapAround是一个字符串,因此被连接起来。您可以尝试以下

var sizeAround = pdfAround + parseFloat(gapAround);

答案 1 :(得分:1)

这个电话:

 parseFloat(pdfAround + gapAround);

在解析它们之前串联字符串pdfAroundgapAround。尝试:

parseFloat(pdfAround ) + parseFloat(gapAround);

答案 2 :(得分:1)

问题在于您拨打toFixed()

parseFloat()解析一个字符串并返回一个浮点数

toFixed()将数字转换为具有指定小数位数

的字符串

所以当你这样做时:

var gapAround = parseFloat((gearRepeat / qtyAround) - pdfAround).toFixed(3);

您要将parseFloat((gearRepeat / qtyAround) - pdfAround)的结果转换为字符串,并将其存储在gapAround

这意味着:

var sizeAround = parseFloat(pdfAround + gapAround);

将是连接操作,不是添加,因为pdfAround是一个浮点数,但gapAround是一个字符串。

要解决此问题,应删除对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;