Arif Driessen - 11 months ago 49

Java Question

So if I have a range of numbers '0 - 1024' and I want to bring them into '0 - 255', the maths would dictate to divide the input by the maximum the input will be (1024 in this case) which will give me a number between 0.0 - 1.0. then multiply that by the destination range, (255).

Which is what I want to do!

But for some reason in Java (using Processing) It will always return a value of 0.

The code would be as simple as this

`float scale;`

scale = (n/1024) * 255;

But I just get 0.0. I've tried double and int. all to no avail. WHY!?

Answer

It's because you're doing integer division.

Divide by a double or a float, and it will work:

```
double scale = ( n / 1024.0 ) * 255 ;
```

Or, if you want it as a float,

```
float scale = ( n / 1024f ) * 255 ;
```

Source (Stackoverflow)