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
我做错了什么?
首先,Number.toFixed(n)返回一个字符串(n小数点后面的数字),而不是数字.如果你想用数字做数学,推动它们toFixed通常不是一个好主意(对于任何数学,它们应该转换回Number类型).
其次,+JS中的操作被重载:对于数字,它是附加的,但对于字符串(即使只有一个操作数是一个字符串),它是操作数的连接.这正是你的情况所发生的:两个字符串 - 代表正数和负数 - 只是粘在一起.
(对于其余的算术运算,它不一样,顺便说一下;因此得到了正确的结果-).
总的来说,这是表达你想要的一种可能的方法:
<%= (xValue + yValue).toFixed(8) %>
Run Code Online (Sandbox Code Playgroud)
...但是这里有一个警告:JS中的浮动数学是有缺陷的设计.您只处理可以存储在内存中的浮点值的近似值.大多数情况下,这些近似值将被正确舍入toFixed(),但有时,它们不会.
| 归档时间: |
|
| 查看次数: |
3009 次 |
| 最近记录: |