我正在尝试运行一些计算,但我的 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
。此调用:
parseFloat(pdfAround + gapAround);
在解析字符串之前pdfAround
和gapAround
连接字符串。尝试:
parseFloat(pdfAround ) + parseFloat(gapAround);
这是因为gapAround
是一个字符串,因此是串联的。您可以尝试以下
var sizeAround = pdfAround + parseFloat(gapAround);
问题在于您对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;