查看原文
其他

笨蛋!连0.2这么简单的数字都搞不定!你被炒了!

码农翻身刘欣 码农翻身 2021-04-27

后记:

计算机的本质决定了它是一个二进制的世界,人类熟悉的十进制数字需要转行成二进制才能被计算机处理。但是这个转化的过程却会遇到问题。从漫画中可以看出十进制整数都能精确地转化为二进制表示,但是十进制小数却并不一定。你可以用你熟悉的编程语言如Java、Python, JavaScript快速地重现这一现象。

对于工程计算和科学计算,一个非常近似的二进制小数是可以满足要求的,但是在商业计算尤其是金融领域,必须要精确地表示,精确地计算,这个时候就不能直接使用float,double等类型了,需要用一个工具类如BigDecimal来进行处理。

值得注意的是,国际上对浮点数的存储制定了规范,即IEEE 754, 这个存储格式略为复杂,但其不能精确表示十进制小数的本质是不变的。想要了解存储细节的同学可以参考这篇文章《看完这篇文章,你一定理解什么是浮点数了


你看到的漫画只是冰山一角,在公众号回复关键字“漫画”可以看到更多精彩文章

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存