# C - round



## guiller (10. April 2008)

Hallo, ein Freund hat mir für ein Programm gesagt, dass ich diesen Ausdruck hier benutzten soll, um zu runden,und jetzt wollte ich aber gern wissen was genau macht der Ausdruck:



> round(  Irgendeinezahl*1000000 ) /1000000



Danke,Guillemro


----------



## KD3 (10. April 2008)

round nimmt einen wert den er aufrundet, aber bei deinem bespiel kommt die eingegebene zahl wieder raus  mehr nicht^^

Aber wobei ich sagen muss, dass die Funktion round in C/C++ nicht existiert.


----------



## devDevil (10. April 2008)

Gaanz einfach! 1000000 ^= 10^6
Du rundest in dem Fall auf die 6. Stelle 
* 10^6 scheibst du das Komma nach hinten. / 10^6 holst du das nach dem Runden wieder nach vorne
=>

```
#include <cmath>

const double round(const double value, const std::size_t precision)
{
    const double multiplier(std::pow(10.0, precision));
    return std:floor(value * multiplier  + 0.5) / multiplier;
}
```
Dann kannst du das aufrufen mit:

```
double i = round(10.23123, 5);
```
 nur gibt es eigtl. keinen Grund, wofür man das brauchst.

Sag mal wofür du es verwenden willst!

Okay hab gerade gesehen, das du C nutzt, da ist seid C99 round und roundf im Standard. Okay. Trotzdem bleibt die Erklärung die gleiche


----------



## devDevil (10. April 2008)

@KD3: Was ein Quatsch (Beides!)


----------



## guiller (10. April 2008)

Ah ok alles klar 
Ich verwende den Ausdruck für einen Algorithmus der Nullstellen einer Funktion berechnet, da mein bei manchen Funktionen es aber keinen exakten Wert gibt, brauche ich dass irgendwann wenn z.b. der funktionswert schon 0.00000004764 ist der das mal auf 0 rundet , sodass das Programm erkennt hier ist eine Nullstelle

Danke für eure / deine Hilfe


----------

