- 第三部分用来存储小数(fraction),这里的小数部分是001110011
比如float类型是32位,是单精度浮点表示法:
-
符号位(sign)占用1位,用来表示正负数,
-
指数位(exponent)占用8位,用来表示指数,
-
小数位(fraction)占用23位,用来表示小数,不足位数补0。
而double类型是64位,是双精度浮点表示法:
-
符号位占用1位,指数位占用11位,小数位占用52位。
-
指数位决定了大小范围,因为指数位能表示的数越大则能表示的数越大。
-
而小数位决定了计算精度,因为小数位能表示的数越大,则能计算的精度越大。
注意:
-
程序中应尽量避免浮点数的比较
-
float、double类型的运算往往都不准确
接下来我们讨论一下BigDecimal
===================
1.BigDecimal(double) 创建一个具有参数所指定双精度值的对象
但是这种类型是都不推荐使用的,为什么不推荐使用,我们来试一下
BigDecimal bigDecimal = new BigDecimal(0.2);
System.out.println(bigDecimal);
当你写出这段代码的时候,感觉没啥问题