知方号

知方号

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

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.7976931348623157E3084.9E-3249223372036854775807-9223372036854775808

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。