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

时间:2016-03-13 22:22:00

标签: java int double 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);

    }
}
接受

r *= er = r * e不是。{1}}。为什么呢?

2 个答案:

答案 0 :(得分:9)

r = r * e会给您一个错误,因为r * e的结果是double,因此当您将其存储在int时会失去精确度。

r *= e没有给您错误,因为它是r = (int)(r * e)source)的语法糖。

答案 1 :(得分:0)

这是因为re是不同的类型。使用*=等复合赋值运算符时,类型在幕后进行narrowly转换(隐式)。 *运算符不会隐式转换,因此您必须通过向内转换显式转换:

r = (int) (r * e);