EJS中的求和过程

Laz*_*azy 1 javascript ejs node.js express

我想把这两个变量加起来:

xValue 是2.00000000(正面)

yValue 是-0.00001250(负数)

<%= xValue.toFixed(8) + yValue.toFixed(8) %>
Run Code Online (Sandbox Code Playgroud)

输出正在变为: 2.00000000-0.00001250

但我需要看到这个:= 1.9999875

如果我提取变量:

<%= xValue.toFixed(8) - yValue.toFixed(8) %>
Run Code Online (Sandbox Code Playgroud)

没问题:= 2.0000125

我做错了什么?

rai*_*7ow 5

首先,Number.toFixed(n)返回一个字符串(n小数点后面的数字),而不是数字.如果你想用数字做数学,推动它们toFixed通常不是一个好主意(对于任何数学,它们应该转换回Number类型).

其次,+JS中的操作被重载:对于数字,它是附加的,但对于字符串(即使只有一个操作数是一个字符串),它是操作数的连接.这正是你的情况所发生的:两个字符串 - 代表正数和负数 - 只是粘在一起.

(对于其余的算术运算,它不一样,顺便说一下;因此得到了正确的结果-).

总的来说,这是表达你想要的一种可能的方法:

<%= (xValue + yValue).toFixed(8) %>
Run Code Online (Sandbox Code Playgroud)

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