甚至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
這是因爲你有一些字符串值,有分析所有單獨 –