在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()
,但有时它们不会 。
- 如何在nodejs-Express-passport应用程序中将令牌从服务器传递到客户端
- 节点亚马逊S3 PutObject上传无法上传多个文件(只上传一个),但说,它的工作
- 在路由处理中绕过authentication
- BrowserSync不断地使用Express / Gulp进行GET
- 什么是node.js http模块的“req.url”的express.js等价物?
- 在node / mongodb / express中创buildlogin系统。 无法连接到数据库
- node.js + express + threads_a_gogo阻止请求
- 使用路由文件之外的res.send()
- NodeJS – 所有短(缩写)的字到全字的特征模块