甚至parseFloat方法之后在下面的表达式+运算符concatinating而添加
parseFloat((($scope.Product.cost/100) * $scope.Product.profit) + $scope.Product.cost);
+运算符concatinating和i的值期望它执行加法。
甚至parseFloat方法之后在下面的表达式+运算符concatinating而添加
parseFloat((($scope.Product.cost/100) * $scope.Product.profit) + $scope.Product.cost);
+运算符concatinating和i的值期望它执行加法。
...即使
parseFloat
方法
的表达的+
部分是parseFloat
后不,这是的parseFloat
之前。
你可能想:
(($scope.Product.cost/100) * $scope.Product.profit) + parseFloat($scope.Product.cost);
注意cost
在上面是隐含转换为当你在/100
表达式中使用的数字,但你明确与parseFloat
其他地方将其转换。这两件事情并不完全一样。
我可能更愿意进行转换,然后计算:
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;
为隐含字符串到数字的转换与parseFloat
(及其他)之间的差异破败见this answer。
旁注:你并不需要一些你正在使用的括号的,一并变换当时计算的最后一行上面可能是:
var result = (cost/100) * profit + cost;
...因为*
具有比+
更高的优先级。但额外的()
是无害的。每个在你的表达号码的变量
哈!迷死... –
转换通过应用+
单一运营商对他们每个人:
+$scope.Product.cost/100 * +$scope.Product.profit + +$scope.Product.cost;
正如评论指出的那样,胁迫float
是隐含表达的第一部分由/
和*
运营商,但并不因此对于操作者+
,这将迫使第一数值结果为字符串除非第二个参数首先被转换为数量以及。
所以前两个+
单一的运营商是不是真的有必要。
点取,@ T.J.Crowder。 – trincot
这是因为你有一些字符串值,有分析所有单独 –