Java 整数乘法与浮点乘法的不同结果
我有以下代码:Java 整数乘法与浮点乘法的不同结果,java,floating-point,int,floating-accuracy,floating-point-conversion,Java,Floating Point,Int,Floating Accuracy,Floating Point Conversion,我有以下代码: 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 = 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
会产生不好的结果?因为在第二个示例中您定义了:
float number1 = 0.16f;
//0.16*6=0.96;
但是对于第一个案例,您有:
2 / 12 = 0.166666667
0.166666667*6=1
number2应升级为float类型
2号被提升为浮动
我应该得到0.96分
您应该获得1.0,因为:
2/12*6=2/2=1
0.16*6=0.96
。。。这就是为什么。它与计算int与float算法无关,在这种情况下,它只是一种算法。先做数学题 亲爱的投票人,您是否愿意详细说明这个答案的不足之处?