java – 关于float类型的精度
我无法理解为什么会这样
float f = Integer.MAX_VALUE; System.out.println(Integer.MAX_VALUE); System.out.println((int)f); 产生相同的线, 以及为什么这样做 Float f2 = (float) Integer.MAX_VALUE; System.out.println(Integer.MAX_VALUE); System.out.println(f2.intValue()); 我的意思是,浮点数的尾数长度是2 ^ 23-1.它如何设法保持整数的max_value,即2 ^ 31 – 1? 解决方法
它实际上没有. f的值是2147483648. 但是,narrowing primitive conversion从float到int钳位该值.它到达这一部分:
通过使数字更大,您可以轻松地看到这一点: float f = Integer.MAX_VALUE; f = f * 1000; System.out.println(Integer.MAX_VALUE); // 2147483647 System.out.println((int)f); // 2147483647 或者通过铸造来代替,显然不需要在同一点夹紧: float f = Integer.MAX_VALUE; System.out.println(Integer.MAX_VALUE); // 2147483647 System.out.println((long)f); // 2147483648 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |