黑马程序员技术交流社区
标题:
关于float类型的问题
[打印本页]
作者:
红茶2331
时间:
2013-11-10 16:16
标题:
关于float类型的问题
在做一道题的时候发现下面这个编译时错误的,
float f=5+5.5;
那我写成
float f =5.0+5.5f;为什么编译也错误5.0后面需要加f吗?
作者:
月生春
时间:
2013-11-10 16:34
对,5.0后面也要加上f
作者:
王雨神
时间:
2013-11-10 16:35
为什么呢
作者:
红茶2331
时间:
2013-11-10 18:26
我也感觉原因是什么啊?单精度不加f编译不过,是因为数据会缺失的原因吗?
作者:
半夜雨半夜雨
时间:
2013-11-10 21:25
以我的理解
float f =5.0+5.5f//后面的5.0默认类型为double,不能和5.5f相加,所以5.0后面要加f定义其数据类型
作者:
中关村阿旺
时间:
2013-11-10 22:55
首先,java中默认的整数是int类型的,默认的浮点数是double类型的。
float f =5.0+5.5f;这句话的意思是:5.0是一个double类型的数据,5.5f是一个float类型的数据,两者相加,那么5.5f会有一个自动类型提升的动作,也就是会提升为double类型。
两者之和也就是一个double类型,你赋给一个float类型的变量,肯定会编译失败的。
你可以把5.0后面也加上一个f,或者把5.0后面的.0去掉,这样就没问题了。
作者:
Clare0621
时间:
2013-11-10 23:13
5.0默认是double类型的,跟5.5f相加,5.5f会自动提升成double型,结果也是double型,但你却赋值给float型,所以会编译失败。5.0也强制float型就没事了。
作者:
天ya~_琼楼
时间:
2013-11-12 01:03
楼主的的代码中,5属于int型,5.0属于double型,他们都有8个8位,而float只有4个8位,为了精确,系统只会自动提升数据长度,不会自动缩减,因此运行时float型自动提升为double型,结果10.5属于double型,结果要把double型的值赋给float型的变量,系统是绝对不允许的,因此会提示错误。
可做如下修改:
float f =(float)(5.0+5.5f);
或者double f = 5+5.5;
希望对你有所帮助,谢谢!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2