Java中double的取值范围为1.79E308。E308是啥意思?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中double的取值范围为1.79E308。E308是啥意思?相关的知识,希望对你有一定的参考价值。

此说法正确:
这个是科学计数法,E308表示10的308次方.
1.79E308也就是1.79乘以10的308次方
关于位存储:
比如1位,只能表示0和1,所以1位最大值1
比如2位,0到3,所以最大值3.
关于long:
long共64位其中1位是符号位正负,剩余63位,
表示最大数 2^63-1 =9223372036854775807
long用途:
十进制就有19位,如果你的订单低于19位就能使用long来存储。
问题:
double为什么表示的整数比long大,都是64位啊
原来double,把64位划分了几个 部分,
1、有符号位,指数位,尾数位,通过降低精确度存储更大的数字。
2、尾数52位存储具体数字,指数11位和小数点位置有关,符号位1位代表正负
3、如果整数,你的数超过2^52,double就不精确了,开始舍弃精度
4、如果小数,小数点后边的数超过2^52,double就不精确了,开始舍弃精度
double的应用:
只是提供了小数支持,小数精确到16位左右。也能存储整数。
但是整数精确只能表示2^52以内的数,超过就不精确了。
所以19位以内的整数可以用long,16以内的小数和整数用double
参考技术A 这个是科学计数法,E308表示10的308次方.
1.79E308也就是1.79乘以10的308次方本回答被提问者采纳

以上是关于Java中double的取值范围为1.79E308。E308是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

c++中,float double区别

double数据类型是啥?

double精确到几位小数

sql数据库中的Float数据类型是占几位,几个字节 ,也就是占几个0和1

基本数据类型中的浮点类型

java float跟double类型区别