How result give you divided two numbers?

I explain it on basic example:

public class Test { public static void main(String[] ar ) { double x1 = 1000/3; float y1 = 1000/3; System.out.println("1000/3 : double x1= "+x1+", float y1 = "+y1); System.out.println(); double x2 = 1000.0/3; float y2 = 1000.0f/3; System.out.println("1000.0/3: double x2 = "+x2+",1000.0f/3: float y2 = "+y2); System.out.println(); double x3 = 10.0/3; float y3 = 10.0f/3; System.out.println("10.0/3: double x3 = "+x3+",10.0f/3: float y3 = "+y3); System.out.println(); double x4 = 10.0/3.0; float y4 = 10.0f/3.0f; System.out.println("10.0/3.0: double x4 = "+x4+",10.0f/3.0f: float y4 = "+y4); System.out.println(); } }

Result:

In first calculation the values are int type. So after calculate the result int divided by int is int. So 1000/3 will be 333. If it is as double result or float result the value will be with fractional part: 333.0.

In second and third or fourth calculation the first number is double or float, so result is this type. Therefore result has more fractional digits: for double is more(max 15), for float is less(max 7).

Notice that you can not write:

float y2 = 1000.0/3;

It is error.

```
Exception in thread "main" java.lang.RuntimeException:
Uncompilable source code - incompatible types:
possible lossy conversion from double to float
```

Why? Because double divided by `int`

give you `double`

, not `float`

. `Float`

must be sign will `f`

letter.