@
laoyuan 不是高级不高级的……
round之后就是整数了。
浮点数就是二进制表示的小数。你打印出来的是十进制的小数。
所以接下来我就按二进制小数和十进制小数讲解了。
另外我说的都是有限小数,下面看的时候要把二进制小数理解成二进制表示的有限小数。十进制的情况也同理。
只有它是整数的时候,二进制才能和十进制表示无损地互换——就是说,可以把二进制小数换成一个十进制表示,再把转换结果换回一个二进制表示,这个表示能和最早这个二进制表示是一样的。
以上说的是一般的情况。实际上针对上面说的这种转换,已经有算法可以实现对任意浮点数做这种“无损”的转换了。但是这个转换有一些缺点:
1. 比较晚才发现了这样的算法。这个看似简单的问题对人类的大脑来说还是比较复杂,
2. 换出来的十进制表示基本上都很长,
3. 性能不太好。
因此一般显示的浮点数,虽然是有办法精确表示的,但是出于实用的目的一般选择不精确表示。
这就是为什么 c 和 b 不一样,但打印的结果是一样的。
所以如果你需要表示整数,那就要特意的取整。不知道这么说解释清楚没有。