Question: I need to write a small Java program that deals with calculations involving money. Therefore it needs to have accuracy. (Eg: No `float`/`double` variables, only `long`).

Unfortunately, the original value I need to use is imported through a method which can only read variables as "double".

Now, I tried casting it to a `long` using a method similar to:

```
double importedValue = x;
double importedValueConverted = (long) x;

```

However, when I try dividing importedValueConverted by another "long" variable I get:

> 
> required: long 
>  found: double 
>  error: possible loss of precision
> 
> 
> 

Why is that?

Answer: 
```
double importedValue = x;
double importedValueConverted = (long) x;

```

Note that both of these variables are declared as 'double'. This results in your error (paraphrasing): (the operation you're doing requires a) `long` (but when it tried it found a) `double`.

You want:

```
double importedValue = x;
long importedValueConverted = (long) x;

```
You're casting `x` to a long than trying to assign it to a double. 

That doesn't make sense.

If you want a long, you should use a long.

`long longValue = (long) 4.64;`