public class duliang {
public static void main(String[] args) {
double a1 = Double.MAX_VALUE;
double a2 = Double.MIN_VALUE;
float b1 = Float.MAX_VALUE;
float b2 = Float.MIN_VALUE;
int c1 = Integer.MAX_VALUE;
int c2 = Integer.MIN_VALUE;
System.out.print("Double.MAX_VALUE="+a1+"--");
System.out.println("Double.MIN_VALUE"+a2);
System.out.print("Float.MAX_VALUE"+b1+"--");
System.out.println("Float.MIN_VALUE"+b2);
System.out.print("Integer.MAX_VALUE"+c1+"-");
System.out.println("Integer.MIN_VALUE"+c2);
System.out.println((float)1/60);
System.out.println((float)1/60);
}
输出 是这样,为什么 Double float 的最大值 和 最小值 不同呢
Double.MAX_VALUE=1.7976931348623157E308--Double.MIN_VALUE4.9E-324
Float.MAX_VALUE3.4028235E38--Float.MIN_VALUE1.4E-45
Integer.MAX_VALUE2147483647-Integer.MIN_VALUE-2147483648
------解决思路----------------------
http://blog.csdn.net/bingduanlbd/article/details/27790287
你可以做几次浮点数转换为二进制的练习就明白了
------解决思路----------------------
这个,重新看了下源码,java好像没有什么有无符号之分
和C的含义不同,java里的最小值指的是能表示的最小精度,而不是所谓的最大负数
没注意过这个
------解决思路----------------------
根据ieee 754标准,浮点数分为三部分:符号位,浮点部分,数值部分。
其中符号位占1位,所以任何数都有正负之分(比如+0和-0)。因此浮点数在数轴上表示的范围应该是原点对称的,大致像这样:
---- -MAX ---------- -MIN --------- -0 +0 -------- +MIN ---------- +MAX ------>
你会发现其中有好几段空白。它不能表示绝对值大于max的值,也不能表示绝对值小于min的值。Java给出的就是这里的min和max,与整数的概念不同。
又因为它的浮点是二进制浮点,且采用的不是补码表示,且数值部分是二进制浮点,只有一位(一定是1)在小数点前,其他位都在小数点后,导致min的指数比max大一些。
具体还是要看看浮点数的内存表示法,才能明白。
------解决思路----------------------
JAVA中的浮点运算是不准确的,要做精确的浮点型运算,用Bigdecimal类