在以下表达式
中parseFloat((($scope.Product.cost/100) * $scope.Product.profit) + $scope.Product.cost);
+运算符正在整合这些值,我希望它能够执行添加。
答案 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
和/
运算符对表达式的第一部分暗示了对*
的强制,但对于+
则不然。运算符,它将第一个数字结果强制转换为字符串,除非第二个参数首先转换为数字。
所以前两个+
单一运算符并不是必需的。