二进制算术运算

时间:2014-06-25 16:00:23

标签: java casting compiler-errors type-conversion

为什么浮点数和整数的编译时间错误都是4字节? 我在各个网站上搜索过但没有得到满意的答案

public static void main(String[] args) {
        int a= 10.0F+10;
        System.out.println(a);

}

如果我以问题的方式提问,请纠正我,因为我是stackOverflow的新手

2 个答案:

答案 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