5

通过我的 javascript 库,我最终得到了一个代表数字的字符串。现在我想对该数字进行加法运算,而不是进行字符串连接。如果您的数字始终为整数,则解决方案很简单( 如何使用 javascript (jquery) 将整数值添加到返回字符串的值?如何进行加法而不是串联)。但是我的字符串可以是浮点数或整数,并且在添加时,我不知道它会是哪个。有没有办法确保加法发生,无论它是浮点数还是整数?

4

4 回答 4

10

尝试使用parseFloat. 输入变量将被转换为浮点数,无论字符串包含整数还是浮点数都有效。您的结果将始终是浮点数。

于 2012-10-19T20:43:26.167 回答
4

parseFloat即使给定一个整数,始终使用它也是相当安全的。如果必须使用适当的转换,您可以match为小数点并使用适当的函数。

于 2012-10-19T20:43:32.557 回答
2

我将假设浮动添加就足够了,如果不是,那么你需要更深入地挖掘。

function alwaysAddAsNumbers(numberOne, numberTwo){
  var parseOne = parseFloat(numberOne),
      parseTwo = parseFloat(numberTwo);
  if (isNaN(parseOne)) parseOne = 0;
  if (isNaN(parseTwo)) parseTwo = 0;
  return parseOne + parseTwo;
}

要接受@Asad 所说的话,您可能想要这样做:

function alwaysAddAsNumbers(a, b){
  var m = 0,
      n = 0,
      d = /\./,
      f = parseFloat,
      i = parseInt,
      t = isNaN,
      r = 10;
  m = (d.test(a)) ? f(a) : i(a,r);
  n = (d.test(b)) ? f(b) : i(b,r);
  if (t(m)) m = 0;
  if (t(n)) n = 0;
  return m + n;
}

这将始终为您提供至少零输出,并且不会告诉您是否有任何一个是NaN.

于 2012-10-19T20:45:21.677 回答
0

出于某种原因....谁知道???

使用 parseFloat 有效....当 parseInt 不...显然它们并不总是相同的。

FWIW ....我在这里从“选中”复选框“添加”数据元素...

    var AddOns = 0;

    $( '.broadcast-channels').each(function(){              
        if ( $(this).prop("checked")) {                             
            var thisAddOn =  parseFloat($(this).data('channel'));      
            AddOns = AddOns + thisAddOn;                                      
        }           
});
于 2013-11-27T19:12:00.163 回答