黑马程序员技术交流社区

标题: 关于整数类型和浮点类型 有个程序求教一下 [打印本页]

作者: 荣凯旋    时间: 2011-12-9 17:34
标题: 关于整数类型和浮点类型 有个程序求教一下
本帖最后由 荣凯旋 于 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呢
为什么呢
作者: ◇半度微凉    时间: 2011-12-9 17:40
呵呵!因为float数据类型参与运算的时候,系统会先将它自动转换成double类型再进行运算,所以你上面代码中就相当于两个double类型的数据进行运算,所以运行后的正确结果当然会是double类型的3.5了!
作者: 荣凯旋    时间: 2011-12-9 17:51
谢了伙计~是我刚把文件编译错了,结果就是3.5  没错~
作者: 郝亚平    时间: 2011-12-9 17:54
float--4字节--小碗。
double--8字节--大碗。
float和double两者一同运算,内存空间需求,会自动类型提升——”小碗变大碗“。float类型变身double类型。
我在自己机子上试试,结果3.5。小数默认是double类型的。
楼上正解。


作者: ◇半度微凉    时间: 2011-12-9 17:55
呵呵 客气客气!{:soso_e183:} 一块儿学习!多多交流!{:soso_e130:}  
对了,既然问题已经解决了,别忘了把帖子改成已解决啊!不然你没分的!嘿嘿···
作者: 刘基军    时间: 2011-12-9 18:14
把我一吓,怎么不是3.5呢,还验证了一遍。。。{:soso_e126:}
作者: 王青山    时间: 2011-12-9 20:02
楼主你好,这道问题是有答案的,就是3.5嘛。你懂得。
当float与double俩种类型的值进行运算时,
计算机会自动将float提升为double型,
这种转换叫做自动类型转换,也叫隐式类型转换。
作者: 李明    时间: 2011-12-9 23:26
肯定是3.5啊,不同类型之间运算自动向高级类型的转换的啊,结果肯定是double类型3.5了




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