EJS中的求和过程

问题描述 投票:1回答:1

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

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

我做错了什么?

javascript node.js express ejs
1个回答
5
投票

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

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

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

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

<%= (xValue + yValue).toFixed(8) %>

...但是这里有一个警告:JS中的浮动数学是有缺陷的设计。您只处理可以存储在内存中的浮点值的近似值。大多数时候,这些近似值将被toFixed()正确地舍入,但有时候,they won't

© www.soinside.com 2019 - 2024. All rights reserved.