java浮点型单精度_java浮点类型float和double的主要区别,它们的小数精度范围大小是多少?...

java浮点类型float和double的主要区别,它们的小数精度范围大小是多少?

​ 计算机中通过0和1的组合来表示所有信息。在一定长度范围内,0和1的组合数量是有限的,比如:两位的0和1只有四种组合(00,01,10,11),但是十进制的小数是无限的(0到1之间有无数个小数),所以就存在所谓精度问题,也就是十进制的部分小数在计算机中是无法表示的。

​ 再者,十进制的小数在计算机中表示时是通过这样的方式来转换的:二进制的小数点右侧第一位表示十进制的0.5,第二位表示十进制的0.25,第三位表示十进制的0.125,以此类推,如:十进制的0.25转换为二进制是0.01。十进制的很多小数需要通过多个二进制的小数组合在一起来表示,如:0.75可以通过二进制的0.11来表示。但是部分小数是无法通过这样的方式来表示的,如:十进制的0.1无法通过二进制的一位小数来表示,而且组合多个二进制小数也只能是个近似值。

总结:

十进制的小数在0到1之间有无数个,计算机中一定长度的0和1的组合数量是有限的,所以计算机中只能表示部分的十进制小数。可以表示哪些部分,通过精度来控制,如:十进制的2位精度总共有100个小数(0.00到0.99)需要表示。

Java中的float占4个字节,可以保存7到8位的小数,也就是部分的十进制八位小数在Java中可以表示,但是部分的八位小数是表示不了的,当然这是指整数部分为0时。

Java中的double占8个字节,长度是float的两倍,可以表示的十进制小数更多,整数部分为0时,可以保存15到16位小数.

通过二进制的0和1表示十进制小数时,从小数点开始,每往后移一位表示的数据是前一位的1/2,十进制小数通过组合一个或者多个二进制小数来表示,但是这种方式导致精度范围内的部分数据也是不能精确表示的,而是用一个近似值来表示,但是不是四舍五入.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值