







后记:
计算机的本质决定了它是一个二进制的世界,人类熟悉的十进制数字需要转行成二进制才能被计算机处理。但是这个转化的过程却会遇到问题。从漫画中可以看出十进制整数都能精确地转化为二进制表示,但是十进制小数却并不一定。你可以用你熟悉的编程语言如Java、Python, JavaScript快速地重现这一现象。
对于工程计算和科学计算,一个非常近似的二进制小数是可以满足要求的,但是在商业计算尤其是金融领域,必须要精确地表示,精确地计算,这个时候就不能直接使用float,double等类型了,需要用一个工具类如BigDecimal来进行处理。
值得注意的是,国际上对浮点数的存储制定了规范,即IEEE 754, 这个存储格式略为复杂,但其不能精确表示十进制小数的本质是不变的。
如需转载,请通过作者微信公众号coderising获取授权。