D
Ich ahb auch eine:
#include <cmath>
#include <string>
#include <sstream>
using namespace std;
double runden(
double wert,
int nachkommastellen
)
{
return ((int) ((wert * pow(10.0, nachkommastellen)) + ((wert < 0)? - 0.5 : 0.5))) / pow(10.0, nachkommastellen);
}
double runden2(
double wert,
int nachkommastellen
)
{
int i = 0, j = 0;
for(; wert < 1; i++)
wert *= 10;
for(; wert > 10; j++)
wert /= 10;
return ((int) ((wert * pow(10.0, nachkommastellen)) + ((wert < 0)? - 0.5 : 0.5))) / pow(10.0, nachkommastellen + i - j);
}
string runden3(
double wert,
int nachkommastellen,
int min_laenge = 0,
bool normal_runden = true,
bool m_laenge = false,
int max_laenge = 0
)
{
string str = double_to_string(normal_runden? runden(wert, nachkommastellen) : runden2(wert, nachkommastellen));
int len = str.length();
for(;len < min_laenge; len++)
str += " ";
if(m_laenge)
for(;len > max_laenge; len--)
str = str.erase(len);
return str;
}
Für deine Zwecke müsstest du das so machen:
datei << runden3(dein_wert, nachkommastellen, /*Beispiel:*/15, false);
Zur Erklärung:
double wert:
Erklärt sich von selbst!
int nachkommastellen:
Auch!
int min_laenge:
Hier kannst du die minimale Länge des Zurückgegebenen Strings angeben.
bool normal_runden
Stell einfach auf false!
Den Rest brauchst du nicht!