大家都知道,在Java中一共有八中基本类型,分别是整型:int,short,long,byte ;
浮点型:float,double ; 字符型:char ; 布尔型:boolean
其中浮点型中float是一个比较有意思的类型。众所周知,float有4个字节,包括1位符号位,8位表示指数,能表示23位数。而int类型同样是4个字节,1位符号位,但它能表示31位数。按范围来讲,int不如float大,虽然都是4字节,但是float还有小数,而int只是整型。按精度来讲,int精度却比float要高。
那么问题来了,为什么会这样呢?我们先来看看float是如何在计算机中存储的。上面已经已经说到float有4个字节,1位符号位,8位表示指数,能表示23位数。在计算机中保存float数就是分为这三个部分。
第一部分用来存储符号位,占用一位,用来区分正负,0表示正,1表示负。
第二部分用来存放指数,占用8位,这里的指数为十进制的6
第三部分用来存放小数,占用23位。
也就是说符号位决定正负,指数为决定大小范围,而小数位决定了计算精度。而在指数范围内的float数的小数部分超过小数位,计算机便不会对其进行存储,造成精度丢失。而int为整型,范围内不存在精度丢失问题。所以float的精度是不如int范围大的
关于float精度的一些事情
最新推荐文章于 2023-02-23 10:35:35 发布