float和double使用注意
float:单精度浮点数,占4字节,32位。
double:双精度浮点数,占8字节,64位。
注意:
1、十进制数形式:浮点数必须包含一个小数点,例如:3.13、5.16;不包含小数点会被当成int类型处理,例如:3则会被当成int类型。
2、科学计数形式:例如:5.12e2、5.12E2,只有浮点类型的数值才可以使用科学计数法形式表示,例如:58000是int类型,58E3则是浮点类型的值,58000.0
public void test(){ // ft的值发生了改变 float ft = 5.1234567F; System.out.println("ft---" + ft); // 5.1234565 // db值发生改变 double db = 6.1234567890123456; System.out.println("db---" + db); // 6.123456789012345 // 正无穷大和负无穷大 double dMax = Double.POSITIVE_INFINITY; float fMax = Float.POSITIVE_INFINITY; double dMin = Double.NEGATIVE_INFINITY; float fMin = Float.NEGATIVE_INFINITY; System.out.println("float和double正无穷大比较---" + (dMax == fMax)); // true System.out.println("float和double负无穷大比较---" + (dMin == fMin)); // true // 0.0 除以 0.0将出现非数 double num = 0.0; System.out.println(num / num); // NaN // 非数之间不相等 System.out.println(num / num == Float.NaN); // false // 所有正无穷大都是相等的 System.out.println(6.0 / 0 == 66.0 / 0); // true // 负数除以0.0得到负无穷大 System.out.println(-6 / 0.0); // -Infinity // 数值中使用下划线分割,java7引入 double number = 12_1313.14_1592; System.out.println("number---" + number); // 121313.141592 // 5 除以 0抛出异常,被除数为整数,除数不能为0,否则抛出异常 System.out.println(5 / 0); // java.lang.ArithmeticException: / by zero }
如果要精确保存一个浮点数,可以考虑使用 BigDecimal类