Training Java

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.