Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does int = int * double give an error and int *= double does not (in Java)? [duplicate]

Why does an assignment of the form int = int * double give an error, and an assignment of the form int *= double does not give an error (in Java)?

Example:

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 is accepted and r = r * e isn't. Why?

like image 306
Marco de Boer Avatar asked Mar 13 '16 22:03

Marco de Boer


1 Answers

r = r * e gives you an error because the result of r * e is a double so there will be a loss of precision when you store it in an int.

r *= e does not give you an error because it is syntactic sugar for r = (int)(r * e) (source).

like image 84
DanielGibbs Avatar answered Oct 07 '22 04:10

DanielGibbs