Javascript EJS中的求和过程
我试图将两个变量相加如下:Javascript EJS中的求和过程,javascript,node.js,express,ejs,Javascript,Node.js,Express,Ejs,我试图将两个变量相加如下: xValue为2.00000000(正) y值为-0.00001250(负值) 没有问题:=2.0000125 我做错了什么?首先,Number.toFixed(n)返回一个字符串(小数点后有n位),而不是一个数字。如果你想用数字来做数学运算,把它们推到固定的toFixed通常不是一个好主意(对于任何数学来说,它们都应该转换回Number类型) 其次,+操作在JS中重载:对于数字,它是加法,但是对于字符串(即使只有一个操作数是字符串),它是操作数的串联。这正是在您的案
xValue
为2.00000000(正)
y值
为-0.00001250(负值)
没有问题:=2.0000125
我做错了什么?首先,
Number.toFixed(n)
返回一个字符串(小数点后有n
位),而不是一个数字。如果你想用数字来做数学运算,把它们推到固定的toFixed
通常不是一个好主意(对于任何数学来说,它们都应该转换回Number
类型)
其次,+
操作在JS中重载:对于数字,它是加法,但是对于字符串(即使只有一个操作数是字符串),它是操作数的串联。这正是在您的案例中发生的情况:两个字符串——代表正数和负数——只是粘在一起
(顺便说一句,其余算术运算的结果不一样;因此-
的结果是正确的)
总的来说,这里有一种可能的方法来表达您的需求:
<%= (xValue + yValue).toFixed(8) %>
。。。但这里有一个警告:JS中的浮点数学在设计上有缺陷。您只处理可以存储在内存中的浮点值的近似值。大多数情况下,这些近似值将正确地四舍五入到
toFixed()
,但有时,.首先,Number.toFixed(n)
返回一个字符串(小数点后有n
位),而不是一个数字。如果你想用数字来做数学运算,把它们推到固定的toFixed
通常不是一个好主意(对于任何数学来说,它们都应该转换回Number
类型)
其次,+
操作在JS中重载:对于数字,它是加法,但是对于字符串(即使只有一个操作数是字符串),它是操作数的串联。这正是在您的案例中发生的情况:两个字符串——代表正数和负数——只是粘在一起
(顺便说一句,其余算术运算的结果不一样;因此-
的结果是正确的)
总的来说,这里有一种可能的方法来表达您的需求:
<%= (xValue + yValue).toFixed(8) %>
。。。但这里有一个警告:JS中的浮点数学在设计上有缺陷。您只处理可以存储在内存中的浮点值的近似值。大多数情况下,这些近似值将被toFixed()
正确舍入,但有时
<%= (xValue + yValue).toFixed(8) %>