How can I round floats up to any number of decimal points?

For instance.. if I have 34.52348.. I could call the function, something like round(24.52348,2) to round it up to 24.52... Maybe there's a function I don't know about... please help.

Printable View

- 10-21-2002voidRounding numbers up...
How can I round floats up to any number of decimal points?

For instance.. if I have 34.52348.. I could call the function, something like round(24.52348,2) to round it up to 24.52... Maybe there's a function I don't know about... please help. - 10-21-2002Captain Penguin
It could be done with a function if you put the float into a char array, go through each one until you find the decimal, then go however many you need after the decimal and round up or down depending on the last digit.

I don't know of any standard C++ function to do it, but a function like I described above wouldn't be hard to write. - 10-21-2002Eibro
#include <cmath>

// ...

const float pi = 3.14159;

int piIsExactly3 = std::ceil(pi);

In short, use std::ceil() found in <cmath> - 10-21-2002salvelinus
To round to a whole number, either subtract .5 and use ceil() or add .5 and use floor().

e.g., 1.4 + .5 = 1.9, floor(1.9) = 1 // actually 1.0

1.6 + .5 = 2.1, floor (2.1) = 2 - 10-21-2002geophyzzer
...and to round to n decimal places, multiply by 10^n, round, then divide by 10^n

- 10-21-2002salvelinusRe: Rounding numbers up...Quote:

*Originally posted by void*

**How can I round floats up to any number of decimal points?**

For instance.. if I have 34.52348.. I could call the function, something like round(24.52348,2) to round it up to 24.52... Maybe there's a function I don't know about... please help.

Using my previous example, you could add .005 and then use floor(). The number of zeros before the five is the number of decimal places you want to round to. Possibly the binary inexactness of floating point numbers will give errors with decimal places, not sure there.