java中的float数据类型,(4个字节,占32位),为什么float型变量的取值范围是10^(-38)~10^38,

java中的float数据类型,(4个字节,占32位),为什么float型变量的取值范围是10^(-38)~10^38, 究竟是怎么算出来的,

单精度浮点32位,其中指数段有8bits,指数范围为[-127,127]
2的127次方约等于1.7*10的38次方。
38次方是数量级,所以得出命题结论。追问

哦,可是1.7*10^38 不能等于 10^38吧

追答

浮点数在不同的数量级上,每1bit表达精度不一样,所以用“取值范围”,
比如,如果在10的38次方这个级别,1bit上的变动可能表示兆兆以上,不可能精确表示1、10、100这种较小的数字。所以只能算“范围”

再说,对天文集的大数和小数,一般都用数量级描述。
不然给你个精确的数字你会记不住
最大值,340282346638528860000000000000000000000 接近1.7*2*10的38次方
最小值,0.000000000000000000000000000000000000000000001401298464324817

追问

o ,有道理

温馨提示:答案为网友推荐,仅供参考