黑马程序员技术交流社区

标题: 数据类型转换问题 [打印本页]

作者: 就是我    时间: 2016-3-28 11:19
标题: 数据类型转换问题
float f=3.45;//会报错,系统默认小数位double类型,默认整数位int类型
也就是说直接写出来的整数 123,都默认为int类型
但是 byte b=123;却不会报错
有人说是编译器可以识别整数具体值进行提前判断
但是3.45在我看来也在float类型中啊,float类型范围比double类型小,应该可以识别判断在范围内才是啊
有点矛盾

作者: 坚持到底    时间: 2016-3-28 12:38
float和double是精度的不同,就是小数点后面的位数越多就越精确.小数默认为double,你把double给float当然有可能会损失精度(小数点后面的位数可能会减少)所以不行.
作者: zhangtaocg    时间: 2016-3-28 13:49
123为int类型的二进制:00000000  00000000  00000000  01111011     而byte 是2个字节为 00000000  01111011 所以可以赋值,而double类型的小数位比float多,例如1.200和1.200000;计算机认为1.200000比1.200精度高,所以把double类型赋值给float有失精度,所以会报错。。
作者: qing31657552    时间: 2016-3-28 19:33
是不是后边忘加f了呢?




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