Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript +;运算符是concatating而不是adding,即使在parseFloat方法之后也是如此_Javascript_Angularjs - Fatal编程技术网

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。