javascript - EJS中的求和过程

标签 javascript node.js express ejs

我正在尝试像这样对两个变量求和:

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/

相关文章:

javascript - 是否可以使用一组参数同时调用两个函数?

node.js - 从客户端*桌面* Meteor 应用程序读取/写入/浏览文件?

node.js - NodeJS 服务器不适用于 OpenShift (_extend)

sql - 在nodejs中,如何运行SQL查询以便在渲染页面之前准备好数据?

javascript - 在 nodejs 中处理太多需求

javascript - 从数组中删除一个元素

javascript - 使用 jQuery 平滑滚动进行导航会导致奇怪的行为

javascript - React Native 未定义不是函数错误

javascript - 如何使用Nodejs找到每个数组对象的位置

javascript - 如果socketIO生成的ID是自动生成的,如何在两个用户之间建立通信?