黑马程序员技术交流社区

标题: 数据类型 隐式转换的问题 [打印本页]

作者: ㏒假™面具    时间: 2015-2-28 20:11
标题: 数据类型 隐式转换的问题
本帖最后由 ㏒假™面具 于 2015-3-6 02:58 编辑

默认转换
                A:byte,short,char - int - (long - float)? - double
                B:byte,shotr, char相互之间不转换,他们参与运算首先转换成int型。

                问题:long在内存中用8个字节存储,float用4个字节存储,默认转换是long-float,
                      不会损失精度吗?

作者: fantacyleo    时间: 2015-2-28 20:19
“long在内存中用8个字节存储,float用4个字节存储,默认转换是long-float,会损失精度”

这个结论要成立,前提是long和float在计算机内存中表示的方式一致,但实际上这个前提不成立。整数和浮点数的表示方式差异很大。结果就是,虽然float只占4个字节,却能比占8字节的long表示更大范围的数,具体取值可通过打印Float.MAX_VALUE Long.MAX_VALUE这两个变量来查看
作者: alvis2015    时间: 2015-3-1 10:34
long 和 float之间的默认转换不是靠直接截取位数实现的。因为他们两个存储数值的方式不一样,不能直接靠截取位数实现转换。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2