Ric*_*ich 21 java math floating-point
我正在做floats和ints的乘法和除法,我忘记了隐含的转换规则(问题中的单词看起来太模糊了,谷歌比在这里要求更快).
如果我有两个ints,但我想做浮点除法,我是否只需要转换一个或两个操作数?乘法怎么样 - 如果我乘以a float和a int,答案是float什么?
Dam*_*ash 33
您不能通过inta float的划分来分配结果,int反之亦然.
所以答案是:
如果我有两个
ints,但我想做浮点除法......?
一个演员就足够了.
如果我乘以a
float和anint,答案是float什么?
是的.
float f = 1000f;
int i = 3;
f = i; // Ok
i = f; // Error
f = i/f; //Ok 0.003
f = f/i; //Ok 333.3333(3)
i = i/f; //Error
i = f/i; //Error
Run Code Online (Sandbox Code Playgroud)
Boz*_*zho 11
展示:
int i1 = 5;
float f = 0.5f;
int i2 = 2;
System.out.println(i1 * f);
System.out.println(i1 / i2);
System.out.println(((float) i1) / i2);
Run Code Online (Sandbox Code Playgroud)
结果:
2.5
2
2.5
Run Code Online (Sandbox Code Playgroud)
如果二元运算符的至少一个操作数是浮点类型,则操作是浮点运算,即使另一个是整数.
(来源:Java语言规范 - 4.2.4)
如果我乘以一个浮点数和一个int,答案是浮点数吗?
System.out.println(((Object)(1f*1)).getClass());//class java.lang.Float
Run Code Online (Sandbox Code Playgroud)
(如果你使用DrJava,你只需在交互面板中键入((Object)(1f*1)).getClass().还有一个DrJava for Eclipse的插件.)