为什么int = int*double给出错误而int*= double没有(在Java中)?

Mar*_*oer 4 java double int multiplying

为什么赋值形式为int = int*double会给出错误,而int*= double形式的赋值不会产生错误(在Java中)?

例:

public class TestEmp {

    public static void main(String[] args) {

        double e = 10;
        int r = 1; 
        r *= e;

        r = r * e;
        System.out.println("De uitkomst van r :" + r);

    }
}
Run Code Online (Sandbox Code Playgroud)

r *= e被接受,r = r * e不是.为什么?

Dan*_*bbs 9

r = r * e给你一个错误,因为结果r * e是,double所以当你存储它时会有精度损失int.

r *= e没有给你一个错误,因为它是r = (int)(r * e)(源)的语法糖.