我正在尝试像这样对两个变量求和:
xValue
为 2.00000000(正)
yValue
为 -0.00001250(负)
<%= xValue.toFixed(8) + yValue.toFixed(8) %>
输出变为:2.00000000-0.00001250
但我需要看到这个:= 1.9999875
如果我提取变量:
<%= xValue.toFixed(8) - yValue.toFixed(8) %>
没有问题:= 2.0000125
我做错了什么?
最佳答案
首先,Number.toFixed(n)
返回一个 string(小数点后有 n
位),而不是 < em>数。如果您想对数字进行数学运算,将它们插入 toFixed
通常不是一个好主意(对于任何数学,它们都应该转换回 Number
类型)。
其次,+
操作在 JS 中被重载:对于数字,它是加法,但对于字符串(即使只有一个操作数是一个字符串),它是操作数的连接。这正是您的情况:两个字符串 - 代表正数和负数 - 只是粘在一起。
(顺便说一句,对于其余的算术运算,它是不一样的;因此 -
的结果是正确的)。
总的来说,这是一种表达你想要的东西的可能方法:
<%= (xValue + yValue).toFixed(8) %>
...但这里有一个警告:JS 中的 float 学设计存在缺陷。您只处理可以存储在内存中的浮点值的近似值。大多数时候,这些近似值会被 toFixed()
正确舍入,但有时,they won't .
关于javascript - EJS中的求和过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25753261/