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算法无关,在这种情况下,它只是一种算法。先做数学题

亲爱的投票人,您是否愿意详细说明这个答案的不足之处?