I have a code in java that says,

```
btmpW / imgW
```

but in this case I get `0`

as the value, I tried using `int`

, `long`

, `float`

and `double`

as my data type but it still returns `0`

.

When I try to do the `Log.i()`

on both int values, I got this

```
I/btmpW: 548
I/imgW: 1041
```

So using a calculator to calculate, I got `0.5346341463`

… and I am new to Java, but I think Java don't accept numbers with more than 9 digits, making me assume that Java returns only the `(int)0`

and since the digits are more than 9, it just ignored the decimal. So i searched and found something like `BigDecimal`

and `BigInteger`

. So I tried to use them, but I am getting some errors

So I want to know, is there a way to store such value in Java. `btmpW`

and `imgW`

are user defined so I don't know what the outcome would be when I run `btmpW / imgW`

, so basically, is there a digits data type in Java that stores both long, short, integer and decimal numbers

## Update

Below are the errors I am getting

```
BigDecimal a = (BigDecimal)btmpW / imgW; //Inconvertibles types; cannot cast 'int' to java.math.BigDecimal
BigInteger a = (BigInteger)btmpW / imgW; //Inconvertibles types; cannot cast 'int' to java.math.BigInteger
BigIntegers a = (BigIntegers)btmpW / imgW; //Inconvertibles types; cannot cast 'int' to java.math.BigIntegers
BigDecimal a = btmpW / imgW; //Inconvertibles types; REQUIRED: BigDecimal FOUND int
BigInteger a = btmpW / imgW; //Inconvertibles types; REQUIRED: BigInteger FOUND int
BigIntegers a = btmpW / imgW; //Inconvertibles types; REQUIRED: BigIntegers FOUND int
```