黑马程序员技术交流社区

标题: 关于数据类型的一个小问题。 [打印本页]

作者: date1130    时间: 2014-10-30 22:29
标题: 关于数据类型的一个小问题。
下面两种方式有区别吗?
float f1 = 12.345f;
float f2 = (float)12.345;
一直没有搞明白这道题,
第二个是强制类型转换,那第一句是什么意思呢?有什么区别?

作者: 姜浩    时间: 2014-10-31 02:26
这个问题我理解的也不够透彻,简单说下我的理解。
你可以打开eclipse,将一下几句代码输入,编译器会帮助你。
                int i = 12.345f;// 会提示不能将float转成int, 12.345f形式为float类型。
                float f = 12.345;// 会提示不能将double转成float,12.345为double。
                float f1 = 12.345f;// float的正常书写格式。
                // 此为double类型的两种书写格式。
                double d1 = 12.345;
                double d2 = 12.345d;
主要的原因,是因为这几种类型,所占用的字节数不同。
作者: wzg1015    时间: 2014-10-31 07:36
这种有小数点的值默认是储存为Double型。就如同x=x+1中的1默认是int型一样。在后面加上f是为了提醒编译器这是个float,储存的时候就是按float进行存储。而前面加folat是将后面强制转换成float。也就是存储时是doule,给前面赋值的时候才会进行强制转换。这其中是否有编译器的优化就不得而知了。
这样看你就知道区别了
float f1 = 12f;//这个12就是float的类型。会按12.0来存储
float f2 = (float)12;/这个12是int的类型。(默认类型)。
上面跟这个原理是一样的
作者: neokevin    时间: 2014-10-31 11:44
12.345默认是double类型的,所以第二句是说将double类型的数据强制类型转换为float,第一句在最后加上f就是表示12.345是float的,不会进行类型转换。




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