思考long 和 double都是8个字节为什么double范围更大?

本文探讨了为何在同样使用8个字节存储的double和long类型中,double表示的数值范围远大于long。关键在于它们的存储结构不同。double采用科学计数法,分为符号位、尾数和指数位,而long则直接存储整数值。这种差异使得double能以更高效的方式存储数值,从而在有限的内存中表示更大的范围。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

System.out.println(Double.MAX_VALUE);
System.out.println(Double.MIN_VALUE);
System.out.println(Long.MAX_VALUE);
System.out.println(Long.MIN_VALUE);
// 结果如下
1.7976931348623157E308
4.9E-324
9223372036854775807
-9223372036854775808

很明显上面的double表示的范围更大,但是我们都知道,double和long的存储字节都是8位,为什么表示的范围大不相同,远远不止是整数和浮点数之间的差距?
在进行了学习之后,我了解到,double与long表示范围的差距是由于存储结构的不同导致的,换句话说我们保存1000这个数,我们long要存储+1000,而double存储的是+1E3,拆开来看,存储一个数**double可以分成三部分,符号位,尾数为,指数位,**也就是用科学计数法来存储,这简单的1000就能看出差距,long存储1000需要符号位和数字位,需要5位而double存储,却只需要3位,同样一个数,double能够用更少的内存存储,所以多余的内存就能存储更多的数,因此double > long
总结:存储结构的差异,导致了double和long的存储字节都是8位,但double表示范围远大于long

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值