Javascript 除法浮点精度的特性

Javascript 除法浮点精度的特性,javascript,floating-point,Javascript,Floating Point,在使用各种浮点数解决方案时,我一直在记录值以比较输出。e、 g console.log(3 * 0.1) //0.30000000000000004 console.log(3 * 0.2) //0.6000000000000001 console.log(3 * 0.0001) //0.00030000000000000003 console.log(0.07 * 0.9) //0.06300000000000001 我很好奇看到除法在同一个问题上的行为,并注意到答案是正确的 console

在使用各种浮点数解决方案时,我一直在记录值以比较输出。e、 g

console.log(3 * 0.1) //0.30000000000000004
console.log(3 * 0.2) //0.6000000000000001
console.log(3 * 0.0001) //0.00030000000000000003
console.log(0.07 * 0.9) //0.06300000000000001
我很好奇看到除法在同一个问题上的行为,并注意到答案是正确的

console.log(3 / (1 / 0.1)) //0.3
console.log(3 / (1 / 0.2)) //0.6
console.log(3 / (1 / 0.0001)) //0.0003
console.log(0.07 / (1 / 0.9)) //0.063
除法和乘法的情况有什么不同?所有不希望出现的浮点行为的例子都与乘法有关,乘法是否也适用于除法?有人能给我举一个十进制数除法的基本例子吗


免责声明:我知道浮点数在精度上是十进制的,并且有许多普遍接受的浮点数相乘的有效解决方案。请不要发布浮点乘法的解决方案,也不要发布指向其他SO答案的链接,因为我已经浏览了许多相关SO答案。

@Paulpro,“有理数0.1,即1/10,可以精确地写成十进制的
0.1
”确实让我感觉如此……除法“中断”的例子:试试
3/(1/0.00001)
@MarkDickinson谢谢!我想我现在需要的是更好地理解浮点算术,以理解为什么会出现这些差异。