Anzahl Ziffern einer double feststellen?
-
hmmm ... hört sich ja irgendwie einfach an, aber mir fällt da nichts wirklich einfaches zu ein:
Wie lässt sich die wirkliche Länge eines double Wertes einfach ermitteln?
Also:
12345,0 soll 5 ergeben
123,45 soll 6 ergeben
0,12345 soll 7 ergeben
usw.Die Vorkommastellen lassen sich ja einfach mit ((int)log10(wert))+1 ermitteln.
Ob Nachkommastellen da sind, ist ja auch einfach (wert - ((int)wert)) > 0
Aber die Nachkommastellen?...mir fällt da nur kompliziertes ein.
Einer 'ne Idee?Danke schon mal
Ulli
-
umwandeln in einen string und dann mit strlen gell
-
Vielleicht hilft dir das...
-
jaaaa ... hat richtungsmäßig geholfen.
Hier mal mein "Schnellschuß"
double x, y, n; int len = 0; //die laenge x = -12345.678; //der wert len = int(log10( abs(x) )) +1 ; if( x < 0 ) //- zeichen len++; n = modf( x, &y); if( n != 0 ) //dezimalpunkt len++; while (n != 0 ) { ++len; x *= 10; n = modf( x, &y); }
na ja *kopfkratz* funktioniert für x != 0
Aber, müsste doch irgendwie auch eleganter gehen.../Ulli