【问题标题】:Why does int = int * double give an error and int *= double does not (in Java)? [duplicate]为什么 int = int * double 会给出错误而 int *= double 不会(在 Java 中)? [复制]
【发布时间】:2016-06-28 20:19:25
【问题描述】:

为什么 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 *= e 被接受,r = r * e 不被接受。为什么?

【问题讨论】:

    标签: java int double multiplication


    【解决方案1】:

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

    r = (int) (r * e);
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2013-12-16
        • 1970-01-01
        • 2012-08-04
        • 2019-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-25
        • 2014-06-15
        相关资源
        最近更新 更多