关于float精度的一些事情

大家都知道,在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范围大的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值