在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,它们应该被转换回Numbertypes)。

其次,在JS中重载了+操作:对于数字,它是另外的,但对于string(即使只有一个操作数是string),它是操作数的串联。 这就是你的情况:两个string – 代表正数和负数 – 只是粘在一起。

(这是不一样的,顺便说一句,其余的算术运算,因此正确的结果- )。

总的来说,这里有一个可能的方法来expression你想要的东西:

 <%= (xValue + yValue).toFixed(8) %> 

…但这里有一个警告:在JS中的浮动math是有缺陷的devise。 您只处理可以存储在内存中的浮点值的近似值。 大多数情况下,这些近似值将通过toFixed()正确舍toFixed() ,但有时它们不会 。