why double width 50 110000 the output is 0 000000000000000 Â using -'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?

Â Â Â Â

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?

Â Â Â Â

0 votes

0 votes

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;
```

0 votes

Explanation to what's happening:

In Java, the default type of numbers is `int`

, so when you write `50/110000`

, they're both considered `int`

, although you defined the result to be `double`

.

When `int`

division occurs, the result will be `0`

, because they are both `int`

s, then the `double`

will hold this value, which will be represented as `double`

, so you're getting `0.000000`

.

Possible solutions:

- Coding these numbers with
`d`

:`50d/110000d`

. - Casting one side explicitly (the other will be implicitly cast):
`(double)50/110000`

. `50.0/110000`

.

See Chapter 5. Conversions and Promotions, it'll really help you.

...