CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com

# Thread: [RESOLVED] Rounding a number multiple of another

1. ## [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...

2. Elite Member Power Poster
Join Date
Nov 2003
Location
Florida
Posts
12,518

## Re: Rounding a number multiple of another

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?

3. ## 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...

4. Elite Member Power Poster
Join Date
Apr 2000
Location
Belgium (Europe)
Posts
4,626

## 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.

5. ## Re: Rounding a number multiple of another

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

6. Elite Member Power Poster
Join Date
Nov 2003
Location
Florida
Posts
12,518

## Re: Rounding a number multiple of another

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.

7. ## Re: Rounding a number multiple of another

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...

8. Elite Member Power Poster
Join Date
Aug 2000
Location
New York, NY, USA
Posts
5,656

## Re: Rounding a number multiple of another

Originally Posted by SlimGradey
I was trying random things ...
That could take awhile

Originally Posted by SlimGradey
I'm still new ...
How new could you be? You are on this forum for 12+ years!

#### Posting Permissions

• You may not post new threads
• You may not post replies
• You may not post attachments
• You may not edit your posts
•

Click Here to Expand Forum to Full Width