永发信息网

java double和float的区别

答案:2  悬赏:80  手机版
解决时间 2021-02-26 16:23
java double和float的区别
最佳答案
1、内存结构
float和double的范围是由指数的位数来决定的。
float的指数位有8位,而double的指数位有11位,分布如下:
float:
1bit(符号位) 8bits(指数位) 23bits(尾数位)
double:
1bit(符号位) 11bits(指数位) 52bits(尾数位)
于是,float的指数范围为-128~+127,而double的指数范围为-1024~+1023,并且指数位是按补码的形式来划分的。
其中负指数决定了浮点数所能表达的绝对值最小的非零数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围。
float的范围为-2^128 ~ +2^127,也即-3.40E+38 ~ +3.40E+38;double的范围为-2^1024 ~ +2^1023,也即-1.79E+308 ~ +1.79E+308。
2. 精度
float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响。
float:2^23 = 8388608,一共七位,由于最左为1的一位省略了,这意味着最多能表示8位数: 2*8388608 = 16777216 。有8位有效数字,但绝对能保证的为7位,也即
float的精度为7~8位有效数字
double:2^52 = 4503599627370496,一共16位,同理,
double的精度为16~17位
之所以不能用f1==f2来判断两个数相等,是因为虽然f1和f2在可能是两个不同的数字,但是受到浮点数表示精度的限制,有可能会错误的判断两个数相等!
全部回答
float表示单精度浮点数在机内占4个字节,用32位二进制描述。 double表示双精度浮点数在机内占8个字节,用64位二进制描述。 浮点数在机内用指数型式表示,分解为:数符,尾数,指数符,指数四部分。 数符占1位二进制,表示数的正负。 指数符占1位二进制,表示指数的正负。 尾数表示浮点数有效数字,0.xxxxxxx,但不存开头的0和点 指数存指数的有效数字。 指数占多少位,尾数占多少位,由计算机系统决定。 可能是数符加尾数占24位,指数符加指数占8位 -- float. 数符加尾数占48位,指数符加指数占16位 -- double. 知道了这四部分的占位,按二进制估计大小范围,再换算为十进制,就是浮点数的数值范围。 对编程人员来说,double 和 float 的区别是double精度高,有效数字16位,float精度7位。但double消耗内存是float的两倍,double的运算速度比float慢得多,java语言中数学函数名称double 和 float不同,不要写错,能用单精度时不要用双精度(以省内存,加快运算速度)。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
为什么做事情效率低会被人瞧不起
网络问题,固定IP,出来接主路由器,IP地址是
青衣渔歌生态鱼庄我想知道这个在什么地方
扑克王 下载地址 迅雷
除了酒,还有什么能壮胆的东西
顾家电器这个地址在什么地方,我要处理点事
如图为不同因素与酶促反应速率的关系图,A―
用什么话迎接我们领导的到来啊??急!!!
医疗保险里面有社保和没社保有什么区别
假日时光休闲馆地址在哪,我要去那里办事
老铁汽修厂在什么地方啊,我要过去处理事情
求推荐好用的黑色0.5笔,高考用!要求不滑!
在RT三角形ABC中,角B=90°,ED垂直平分AC,
【儒家思想的精华是什么】儒家的思想精髓是什
美肤宝的面膜好吗
推荐资讯
跪求神探夏洛克文,华福、互攻、福华都可以..
养两只狼狗能保护主人。如果我被人打狼狗会攻
长寿区石桥坝砖厂地址有知道的么?有点事想过
阿木托格拉克在什么地方啊,我要过去处理事情
2011年是大陆赠台大熊猫“团团”“圆圆”抵台
查询违章哪个网站最好
松下滚筒洗衣机显示屏 H29是什么问题拜托高手
西部蒙业巴盟特产怎么样
加湿量3.8kg加湿器多大功率
用堵漏王装抽水马桶真的好吗不需要胶了?
vivoxplay5变砖怎么办
富金源纸品在什么地方啊,我要过去处理事情
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?