为什么浮点数和整数的编译时间错误都是4字节? 我在各个网站上搜索过但没有得到满意的答案
public static void main(String[] args) {
int a= 10.0F+10;
System.out.println(a);
}
如果我以问题的方式提问,请纠正我,因为我是stackOverflow的新手
答案 0 :(得分:3)
在转换类型中,Java并不考虑使用的内存大小。例如,您可以隐式地将64位long
转换为32位float
,因为float具有更宽的范围。
您不能隐式地从float
转换为int
,因为这被视为缩小并需要明确的演员。
注意:转换的顺序可能很重要
int a = (int) 10.0f + 123456787;
System.out.println("a = "+a);
int b = (int) (10.0f + 123456787);
System.out.println("b = "+b);
打印
a = 123456797 // expected
b = 123456792
您得到的结果不同,因为123456787无法表示为没有表示错误的浮点数。但是,10.0F可以准确地表示为int。
同样,按顺序进行投射效果最佳。
int a = (int) 1.5f * 100;
System.out.println("a = "+a);
int b = (int) (1.5f * 100);
System.out.println("b = "+b);
打印
a = 100
b = 150 // expected
答案 1 :(得分:2)
总和会产生float
,您必须将其投放到int
,因为它不可隐式兑换
int a= (int) 10.0F + 10;
在您的示例中,您要添加10.0
这里不需要float