在EJS中进行求和过程
我试图总结这样的两个variables:
xValue
是2.00000000(正数)
y yValue
是-0.00001250(负值)
<%= xValue.toFixed(8) + yValue.toFixed(8) %>
输出成为: 2.00000000-0.00001250
但是我需要看到这个:= 1.9999875
如果我提取variables:
<%= xValue.toFixed(8) - yValue.toFixed(8) %>
没有问题:= 2.0000125
我做错了什么?
首先, Number.toFixed(n)
返回一个string (小数点后有n
数字),而不是一个数字 。 如果你想用数字做math运算,把它们推到“固定”通常不是一个好主意(至于任何math,它们应该被转换回Number
types)。
其次,在JS中重载了+
操作:对于数字,它是另外的,但对于string(即使只有一个操作数是string),它是操作数的串联。 这就是你的情况:两个string – 代表正数和负数 – 只是粘在一起。
(这是不一样的,顺便说一句,其余的算术运算,因此正确的结果-
)。
总的来说,这里有一个可能的方法来expression你想要的东西:
<%= (xValue + yValue).toFixed(8) %>
…但这里有一个警告:在JS中的浮动math是有缺陷的devise。 您只处理可以存储在内存中的浮点值的近似值。 大多数情况下,这些近似值将通过toFixed()
正确舍toFixed()
,但有时它们不会 。