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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 荣凯旋 于 2011-12-12 11:50 编辑

class Demo
{
        public static void main(String[] args)
        {
                float   f = 1.25f;
                double d =  2.25;
                System.out.println(f+d);
        }
}
自己写的编译也能通过,但就是没有结果  我也相信不会有结果
但为什么我在一个视频上看到有人运行这个程序结果就是3.5呢
为什么呢

7 个回复

正序浏览
李明 黑马帝 2011-12-9 23:26:52
8#
肯定是3.5啊,不同类型之间运算自动向高级类型的转换的啊,结果肯定是double类型3.5了
回复 使用道具 举报
王青山 黑马帝 2011-12-9 20:02:38
7#
楼主你好,这道问题是有答案的,就是3.5嘛。你懂得。
当float与double俩种类型的值进行运算时,
计算机会自动将float提升为double型,
这种转换叫做自动类型转换,也叫隐式类型转换。
回复 使用道具 举报
把我一吓,怎么不是3.5呢,还验证了一遍。。。{:soso_e126:}
回复 使用道具 举报
呵呵 客气客气!{:soso_e183:} 一块儿学习!多多交流!{:soso_e130:}  
对了,既然问题已经解决了,别忘了把帖子改成已解决啊!不然你没分的!嘿嘿···
回复 使用道具 举报
float--4字节--小碗。
double--8字节--大碗。
float和double两者一同运算,内存空间需求,会自动类型提升——”小碗变大碗“。float类型变身double类型。
我在自己机子上试试,结果3.5。小数默认是double类型的。
楼上正解。

回复 使用道具 举报
谢了伙计~是我刚把文件编译错了,结果就是3.5  没错~
回复 使用道具 举报
呵呵!因为float数据类型参与运算的时候,系统会先将它自动转换成double类型再进行运算,所以你上面代码中就相当于两个double类型的数据进行运算,所以运行后的正确结果当然会是double类型的3.5了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马