[RESOLVED] Rounding a number multiple of another

Hello all,

How would I be able to round a number in multiples of another...

Let's say width is 150

And multiple to be 64...

I want 150 to become 128...

if it was 160 to become 192...

The width number will change and I want to covert it in multiples of the other number example 64... The minimum value will always be the multiple number used...

Hope I explain it right...

Thx so much...

Re: Rounding a number multiple of another

Quote:

Originally Posted by

**SlimGradey**
Hello all,

How would I be able to round a number in multiples of another...

Let's say width is 150

And multiple to be 64...

I want 150 to become 128...

if it was 160 to become 192...

The width number will change and I want to covert it in multiples of the other number example 64... The minimum value will always be the multiple number used...

Hope I explain it right...

Thx so much...

Forget programming for a minute. If you had to do it using a pencil and paper, what would you do? What steps would you take?

Re: Rounding a number multiple of another

I was trying random things by divide multiple in half and times or add to the width value but always give wrong thing so I tried to hard code it

By doing if width less than 96 width equal 64 and if greater than 96 width is 128... And if less than 160 then width is 128 and if greater than 160 width is 192...and so on till over 512... But think my if statements all nested wrong...

Be better if didn't need to hard code it... I'm still new to math type functions... Not sure how to use % ^ ~ things...

Re: Rounding a number multiple of another

Code:

`int tonearestmultiple(int value, int roundto)`

{

return ( (value + (roundto/2)) / roundto ) * roundto;

}

You may have to adjust the above formula depending on how you expect it to work for negative numbers.

Depending on expectations for odd 'roundto' values, you may also have to adjust the +(roundto/2) part to correspond to your needs.

Re: Rounding a number multiple of another

Once you have worked out the logic, this can be done in 2 lines of code.:cool:

Re: Rounding a number multiple of another

Quote:

Originally Posted by

**SlimGradey**
I was trying random things by divide multiple in half and times or add to the width value but always give wrong thing so I tried to hard code it

By doing if width less than 96 width equal 64 and if greater than 96 width is 128... And if less than 160 then width is 128 and if greater than 160 width is 192...and so on till over 512... But think my if statements all nested wrong...

Be better if didn't need to hard code it... I'm still new to math type functions... Not sure how to use % ^ ~ things...

This isn't about math or %^~ things, it's about logic, and trying random things is never a good idea. You can't write a program if you don't understand how to solve the problem, so working out the steps is the first thing to do.

Re: Rounding a number multiple of another

Quote:

Originally Posted by

**OReubens**
Code:

`int tonearestmultiple(int value, int roundto)`

{

return ( (value + (roundto/2)) / roundto ) * roundto;

}

You may have to adjust the above formula depending on how you expect it to work for negative numbers.

Depending on expectations for odd 'roundto' values, you may also have to adjust the +(roundto/2) part to correspond to your needs.

Thx so much guys... I was so close the first time... I had roundto only twice and not three times... Finally its working... Appreciate so much...

Re: Rounding a number multiple of another

Quote:

Originally Posted by

**SlimGradey**
I was trying random things ...

That could take awhile :)

Quote:

Originally Posted by

**SlimGradey**
I'm still new ...

How new could you be? You are on this forum for 12+ years!