Javascript +;运算符是concatating而不是adding,即使在parseFloat方法之后也是如此
在下面的表达中Javascript +;运算符是concatating而不是adding,即使在parseFloat方法之后也是如此,javascript,angularjs,Javascript,Angularjs,在下面的表达中 parseFloat((($scope.Product.cost/100) * $scope.Product.profit) + $scope.Product.cost); +运算符正在浓缩这些值,我希望它执行加法 …即使在parseFloat方法之后 该表达式的+部分不在parseFloat之后,而是在parseFloat之前 你可能想要: (($scope.Product.cost/100) * $scope.Product.profit) + parseFloat($sc
parseFloat((($scope.Product.cost/100) * $scope.Product.profit) + $scope.Product.cost);
+运算符正在浓缩这些值,我希望它执行加法
…即使在parseFloat
方法之后
该表达式的+
部分不在parseFloat
之后,而是在parseFloat
之前
你可能想要:
(($scope.Product.cost/100) * $scope.Product.profit) + parseFloat($scope.Product.cost);
请注意,当您在/100
表达式中使用时,上面的cost
会隐式转换为number,但您在别处使用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;
有关隐式字符串到数字转换与解析浮点(以及其他)之间的差异,请参阅
旁注:您不需要使用某些参数,上面转换计算的最后一行可能是:
var result = (cost/100) * profit + cost;
…因为*
的优先级高于+
。但是额外的()
是无害的
…即使在parseFloat
方法之后
该表达式的+
部分不在parseFloat
之后,而是在parseFloat
之前
你可能想要:
(($scope.Product.cost/100) * $scope.Product.profit) + parseFloat($scope.Product.cost);
请注意,当您在/100
表达式中使用时,上面的cost
会隐式转换为number,但您在别处使用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;
有关隐式字符串到数字转换与解析浮点(以及其他)之间的差异,请参阅
旁注:您不需要使用某些参数,上面转换计算的最后一行可能是:
var result = (cost/100) * profit + cost;
…因为
*
的优先级高于+
。但是额外的()
是无害的。通过对表达式中的每个变量应用+
酉运算符,将它们转换为数字:
+$scope.Product.cost/100 * +$scope.Product.profit + +$scope.Product.cost;
如注释中所述,/
和*
运算符对表达式的第一部分暗示了对浮点的强制,但对+
运算符则不是这样,除非第二个参数首先也转换为数字,否则它会将第一个数值结果强制为字符串
因此,前两个+
酉运算符实际上不是必需的。通过对表达式中的每个变量应用+
酉运算符,将它们转换为数字:
+$scope.Product.cost/100 * +$scope.Product.profit + +$scope.Product.cost;
如注释中所述,/
和*
运算符对表达式的第一部分暗示了对浮点的强制,但对+
运算符则不是这样,除非第二个参数首先也转换为数字,否则它会将第一个数值结果强制为字符串
所以前两个
+
酉运算符并不是真的需要。这是因为你有一些字符串值,这是因为你有一些字符串值,这是因为你有一些字符串值,这是解析所有单个点,@T.J.Crowder.Point take,@T.J.Crowder。