即使在parseFloat方法之后,+运算符仍在进行汇编

时间:2017-01-02 10:51:07

标签: javascript angularjs

在以下表达式

parseFloat((($scope.Product.cost/100) * $scope.Product.profit) + $scope.Product.cost);

+运算符正在整合这些值,我希望它能够执行添加。

2 个答案:

答案 0 :(得分:2)

  

...即使在parseFloat方法

之后

+之后的parseFloat部分不是,<{em>之前的 parseFloat

你可能想要:

(($scope.Product.cost/100) * $scope.Product.profit) + parseFloat($scope.Product.cost);

请注意,在cost表达式中使用隐式时, 隐式转换为数字,但您显式在其他地方用/100转换它。这两件事并没有做同样的事情。

我可能更喜欢转换,然后计算:

parseFloat

请参阅this answer,了解隐式字符串到数字转换与var cost = parseFloat($scope.Product.cost); // or +$scope.Product.cost var profit = parseFloat($scope.Product.profit); // or +$scope.Product.profit var result = ((cost/100) * profit) + cost; (和其他)之间差异的概述。

附注:你不需要你正在使用的一些parens,上面的convert-then-calculate的最后一行可能是:

parseFloat

...因为var result = (cost/100) * profit + cost; 的优先级高于*。但额外的+是无害的。

答案 1 :(得分:2)

通过对每个变量应用+酉运算符,将表达式中的每个变量转换为数字:

+$scope.Product.cost/100 * +$scope.Product.profit + +$scope.Product.cost;

正如评论中所述,float/运算符对表达式的第一部分暗示了对*的强制,但对于+则不然。运算符,它将第一个数字结果强制转换为字符串,除非第二个参数首先转换为数字。

所以前两个+单一运算符并不是必需的。