Javascript浮点减法

Ten*_*eff 15 javascript floating-point

我想知道如何在javascript中减去两个负浮点数.我试过了:

alert(-0.2-0.1);
Run Code Online (Sandbox Code Playgroud)

结果是-0.30000000000000004.难道我做错了什么?我该怎么做-0.3

Alb*_*gni 20

不,你的代码没有错,大多数小数部分不能用二进制表示,使用

number.toFixed(x)
Run Code Online (Sandbox Code Playgroud)

x您想要的小数位数在哪里,是number减法的结果.


Cri*_*uce 7

另一种可能的解决方案可能是这样的:

Number((-0.2-0.1).toFixed(x))
Run Code Online (Sandbox Code Playgroud)

其中 x 应该是您想要的小数公差。

使用x16 运行此程序,得到的输出为-0.3.

-0.3 === Number((-0.2-0.1).toFixed(16)) // true, and also with every 0 < x < 16
Run Code Online (Sandbox Code Playgroud)

让我知道。