A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ㏒假™面具 中级黑马   /  2015-2-28 20:11  /  885 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ㏒假™面具 于 2015-3-6 02:58 编辑

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

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

2 个回复

倒序浏览
“long在内存中用8个字节存储,float用4个字节存储,默认转换是long-float,会损失精度”

这个结论要成立,前提是long和float在计算机内存中表示的方式一致,但实际上这个前提不成立。整数和浮点数的表示方式差异很大。结果就是,虽然float只占4个字节,却能比占8字节的long表示更大范围的数,具体取值可通过打印Float.MAX_VALUE Long.MAX_VALUE这两个变量来查看
回复 使用道具 举报
long 和 float之间的默认转换不是靠直接截取位数实现的。因为他们两个存储数值的方式不一样,不能直接靠截取位数实现转换。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马