java语言-基本数据类型-数据类型的长度和转换
面5笔5java中3*0.1 == 0.3 将会返回什么?true 还是 false?
A.A true
B.B false
正确答案是 B
答案是B:false,因为浮点数不能完全精确的表示出来,一般都会损失精度。
但是思路是一个比较复杂的浮点实现问题,具体可能参考(待录文章16),既跟浮点数的表示有关,也跟Java的设计机制有关。
需要了解浮点数是如何表示的。
对于0.1来说,其本质是 1 / 10,那么若你用二进制表示它们,然后除的话,是这样的:1 / 1010,然而这一个是除不尽的,是无穷循环。