Java 二进制算术运算

Java 二进制算术运算,java,casting,compiler-errors,type-conversion,Java,Casting,Compiler Errors,Type Conversion,为什么浮点和int都是4字节的编译时错误? 我在不同的网站上搜索过,但没有得到满意的答案 public static void main(String[] args) { int a= 10.0F+10; System.out.println(a); } 如果我以工作方式问这个问题,请纠正我,因为我是stackOverflow的新手总和将导致浮动,您必须将其转换为int,因为它不是隐式可转换的 int a= (int) 10.0F + 10; 在您的示例中,

为什么浮点和int都是4字节的编译时错误? 我在不同的网站上搜索过,但没有得到满意的答案

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

}

如果我以工作方式问这个问题,请纠正我,因为我是stackOverflow的新手

总和将导致
浮动
,您必须将其转换为
int
,因为它不是隐式可转换的

int a= (int) 10.0F + 10;

在您的示例中,您正在添加
10.0
此处不需要
float

总和将导致
float
,您必须将其转换为
int
,因为它不是隐式可转换的

int a= (int) 10.0F + 10;

在你的例子中,你添加了代码> 10 < /Cord>你不需要<代码>浮点这里

< P>转换类型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

在转换类型中,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

仅仅因为两个值的位长度相同并不意味着它们是赋值兼容的。映射位将给您无意义的答案。@user3580294:Righto,否则您也可以将
long
转换为
对象
;的确很有趣。仅仅因为两个值在位中的长度相同并不意味着它们是赋值兼容的。映射位将给您无意义的答案。@user3580294:Righto,否则您也可以将
long
转换为
对象
;注意:这可能不同于
inta=(int)(10.0F+10)用于不同的“10”值;)请参阅我的答案中的两个示例,其中一个顺序或另一个更好。注意:这可能不同于
inta=(int)(10.0F+10)用于不同的“10”值;)请参阅我的答案中的两个示例,其中一个顺序或另一个更好。