Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why double width = 50/110000; the output is 0.000000000000000?

Tags:

java

This is my code :

double width = 50/110000;
System.out.println("width ori is "+width );

And the output is: 0.00000000000

What's wrong ? the expected output has to be 4.5454545454545455E-4

Any body can explain to me why?

like image 545
Dennis Do Avatar asked Oct 27 '13 16:10

Dennis Do


2 Answers

Because you're dividing two integers, so it will only take the integer part (integer division).

Dividing integers in a computer program requires special care. Some programming languages, treat integer division (i.e by giving the integer quotient as the answer). So the answer is an integer.

Examples :

In real life                  In Java

4/3  = 1.33333                4/3  = 1
25/12 = 2.083333              25/12 = 2
9/2 = 4.5                     9/2 = 4
50/110000 = 0.000454545       50/110000 = 0

You can cast one of the number (or both but it's actually useless) to double to avoid that :

double width = (double)50/110000;
double width = 50d/110000;
double width = 50.0/110000;
like image 123
Alexis C. Avatar answered Oct 27 '22 01:10

Alexis C.


Result of int/int returns you an integer.

So the decimal part got truncated resulting you with an integer

You need to cast:

double width = (double)50/110000;

As @Josh M has pointed, You can also try :

double width = 50d / 110000d;
like image 24
Sashi Kant Avatar answered Oct 27 '22 01:10

Sashi Kant