In The Flux 头像

消息来源频道

In The Flux

@intheflux

频道1,703 位成员公开可见持续更新

关于文化、艺术与技术的信息流 A place of radical sharing on art, culture and technology 投稿&联系 @flowfeedbackBot 经常技术控,忍不住会时评,日常好奇心,文化观察员,吐槽苦手,综合解闷方案。 会的太杂了,真不好意思。 艺术我爱之深,恨之切 #不是新闻 #Whisper #Haiku

成员规模1,703 位成员
在线情况待同步
消息总数1,787 条消息
浏览量总数17,232 次浏览

在这个频道里搜索消息……

t.me/intheflux

https://draveness.me/whys-the-design-floating-point-arithmetic/
为什么0.1+0.2不等于0.3?
如果你尝试在javascript中使用console.log(.1 + .2); 计算0.1+0.2的结果,那么你得到的答案会是0.30000000000000004。
我们常常会以为编程语言中的浮点数概念,就是对应数学中的小数,其实并不尽然。这是因为:
1. 编程中的浮点数的精度往往都是有限的,单精度的浮点数使用 32 位表示,而双精度的浮点数使用 64 位表示;
2. 数学中的小数系统可以通过引入无限序列 ... 可以任意的实数;
无论是 0.1 还是 0.2,这两个数字都不是二进制中的『整数』,而当我们试图用二级制来表示它们的时候,就只能通过无限循环小数尝试接近它们的真实值。此外,由于浮点数精度的局限,我们也无法用有限的位数精确地表示0.1和0.2。
这就是为什么0.1+0.2!=0.3的原因。更多其他编程语言在这道题上的表现,可以参考 https://0.30000000000000004.com