我有这段代码:
float number1 = 2f / 12;
System.out.println(number1);
int number2 = 6;
float x = number1 * number2;
System.out.println(x);
作为输出我得到:
0.16666667
1.0
为什么呢?当我将number1和number2相乘时,number2应该被提升为float类型,我应该得到0.96
当我将代码修改为:
float number1 = 0.16f;
System.out.println(number1);
int number2 = 6;
float x = number1 * number2;
System.out.println(x);
我得到了好结果:
0.16
0.96
为什么第一个示例中的操作float = float * int
会产生错误结果?
答案 0 :(得分:2)
因为在第二种情况中您定义了:
float number1 = 0.16f;
//0.16*6=0.96;
但对于第一种情况,你有:
2 / 12 = 0.166666667
0.166666667*6=1
答案 1 :(得分:0)
number2应该被提升为浮动类型
将2号 提升为浮动。
我应该得到0.96
你应该得到1.0,因为:
2/12 * 6 = 2/2 = 1
0.16 * 6 = 0.96
......那就是为什么。在这种情况下,它与计算int与浮点运算无关,它只是算术运算。先做数学!