当前位置:系统粉 > 电脑问答 > 其他问答 > 求助:变量转换

求助:变量转换

提问者:很纯洁嘛  |  浏览 次  |  提问时间:2017-02-10  |  回答数量:9

求助:变量转换double db = (double)(5/2);System.out.println(db);复制代码结果:2请问如何理解这个转换过程,谢谢!

已有9条答案
墨焱峰

墨焱峰

回答数:75  |  被采纳数:49

2017-02-10 03:41:12
说的专业点的话 解释如下:

Java语言中的float,double类型 都是依照IEEE754标准来进行对数值的转换的!
至于什么叫IEEE754标准 这个标准又是什么样子的 可以去查下资料 在这就不过多的介绍了!!

此问题 出现的是一个误区 在java中存在着一种舍入的方式,和我们现实当中的四舍五入不一样!!
IEEE754标准不支持四舍五入的模式!!只支持以下几种舍入模式

1)向最接近的可表示的值;
2)当有两个最接近的可表示的值时首选“偶数”值;
3)向负无穷大(向 下);
4)向正无穷大(向上)以及向0(截断)

在java IEEE标准中采取的默认模式是最近舍入方式 对于0.5这样的数字,采用取偶数的方式

原因是:
由于字长有限,浮点数能够精确表示的数是有限的,因而也是离散的。在两个可以精确表示的相邻浮点数之间,必定存在无穷多实数是IEEE浮点数所无法精确表示的。如何用浮点数表示这些数,IEEE 754的方法是用距离该实数最近的浮点数来近似表示。

对于此问题的 0.5的数字偏向1也不是偏向0也不合适,在计算机内部的运行全都是加法来运行的,乘法 除法 减法 都要转换成加法来进行运行的,因此就涉及到负数的 原码、反码、补码、移码
问题,以及涉及到了带有符号位的二进制计算的问题,此类型在内部都是以补码的方式进行处理的 而不是以原码和反码运行的,因为带有符号位 计算机处理起来不方便,所以只能通过补码的形式来计算
这样一方面使符号位能与有效值部分一起参加运算,从而简化运算规则. 另一方面使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计,具体的可以参考下补码的转化过程!
赞 7
诱娇跟腾童

诱娇跟腾童

回答数:160  |  被采纳数:92

2017-02-10 04:07:58
5/2结果是取整
5除以2商2余1,取整,当然就得2咯
但是得出的2是int型变量,然后将其强制转换成double型的
double型与int型的区别就在于内存中所占位数不同,在不超过两者取值的范围类,机器显示出的结果是一样的,所以你的运行显示结果就是2(double型)
赞 16
疯起来要不得丶

疯起来要不得丶

回答数:107  |  被采纳数:147

2017-02-10 06:31:18
结果是 2.0 呵呵!!!
赞 10
爱傲儿

爱傲儿

回答数:0  |  被采纳数:150

2017-02-10 10:34:40
不是吧?人家给的结果都是2,我解答的没错吧?应该没有误人子弟吧?
赞 0
llonwu

llonwu

回答数:113  |  被采纳数:23

2017-02-10 13:11:09
不相信你自己可以运行下看看
那如果 换成是这样的话 你觉得又应该输出什么值

double db = (double)(5.2/2);
System.out.println(db);

如果按照你的解释的话 5.2 / 2 是取整数部分 得到个2 输出double型的2咯
你运行下看看是不是 跟你所想的一样!
赞 11
涟璃栀子

涟璃栀子

回答数:52  |  被采纳数:59

2017-02-10 04:48:30
算了neo_pang 我看出来我错了,我很惭愧!我没有运行就发言了,楼主,对不起!另外楼主你也误导了我,你不应该说输出的是2,我想当然的认为你说的是正确的了。
赞 5
会开花的树小艾

会开花的树小艾

回答数:6  |  被采纳数:147

2017-02-10 18:35:54
那你又认为 如何去解答这个问题!!
我只知道是内部中 带二进制的数值 转换成补码 运行而执行出的返回值!
根据IEEE标准的默认舍取方式 最终出现的2.0结果!!
更详细的原理解释 我不是很清楚 你能告诉我下吗!
赞 0
残jz

残jz

回答数:120  |  被采纳数:121

2017-02-10 17:26:16
回7楼:我更不清楚!你太谦虚了,不过我可以给你推荐几个网站,上面有很多Java高手,他们应该会知道,网站:
http://www.j2medev/
http://www.bc-cn/index.html
http://www.java-cn/
赞 12
break31

break31

回答数:118  |  被采纳数:82

2017-02-10 13:21:00
因为5和2是整数,所以5/2也是整数,所以显示2,如果想显示小数必须把5和2中其中一个用小数表示,如5.0/2
赞 11
解决方法
版权信息

Copyright @ 2011 系统粉 版权声明 最新发布内容 网站导航