在计算机处理数据时用二进制表示,但并不是所有小数都可以用「完整」的二进制来表示的,比如十进制 0.1 在转换成二进制小数的时候,是一串无限循环的二进制数,计算机是无法表达无限循环的二进制数的,毕竟计算机的资源是有限。因此,计算机只能用「近似值」来表示该二进制,那么意味着计算机存放的小数可能不是一个真实值,现在基本都是用 IEEE 754 规范的单精度浮点类型或双精度浮点类型来存储小数的,根据精度的不同,近似值也会不同。把 0.1 转换成二进制的结果是0.0001100110......而0.1 的二进制浮点数转换成十进制的结果是 0.1000000014901161193847656250.2 的二进制浮点数转换成十进制的结果是 0.20000000298023223876953125这两个结果相加就是 0.300000004470348358154296875