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


Anmelden zum Antworten