StringFormat & PrintFormat

 

Hallo,

weiß jemand zufällig, wie man die Anzahl der 'Ganzen' eines Double-Wertes inkl. führender Nullen in einer String Variablen speichert?

So funktioniert das mit den Nachkommastellen:

int digs = 2;
string fmt = StringFormat("%%.%df",digs);
string strVal = StringFormat(fmt,9.123456678);

Das ergibt: 9.12.

Wie kriege ich jetzt aber ein: 09.12?

Google findet tausendfach nur die Basisversion, F1 (ich benutze das auch;) bietet immerhin die obige Lösung.

Mit diesem Versuch kriege ich leider nur 9.12:

fmt = StringFormat("%%%s.%df",StringFormat("%0i",3+digs),digs); // 2 Vorkommastellen + Punkt + digs Nachkommastellen = 5 in meinem Beispiel

Alles sonst probierte für zu nix Vernünftiges :(

Das bringt auch nur 9.12:

string fmt = StringFormat("%%%s",StringFormat("%0i.%if",3+digs,digs));
 

Musst du handschnitzen ;)

string DoubleToFormat(double _value, int _nullen, int _digits)
{
   string str = DoubleToString(_value,_digits);
   while(StringFind(str,".")<_nullen)
      str="0"+str;
   return(str);
}

void OnStart()
{
   int      intValue = 2;
   double   dblValue = 5;
   string   strValue;

   strValue = DoubleToFormat(dblValue,2,3);
   Print(strValue);

   strValue = DoubleToFormat(intValue,3,2);
   Print(strValue);
}

Mit kleinen Variationen hast du damit ein Tool für Stringmanipulationen.

 
Otto Pauser:

Musst du handschnitzen ;)

Mit kleinen Variationen hast du damit ein Tool für Stringmanipulationen.

Seufz - wirklich?

C und C++ gibt es jetzt schon soooo lange und dafür keine Lösung? Ist doch nun wirklich keine exostische Vorstellung!

 

Ich habe die Lösung bekommen, eigentlich ganz einfach:

int digs = 2;
string fmt = StringFormat("%%0%d.%df",3+digs,digs);
string strVal = StringFormat(fmt,9.123456678);

Ich hatte die Vorstellung von %05i und hab daher vegliche das versucht (mit % am falschen Platz):

int digs = 2;
string fmt = StringFormat("%%%0i.%df",3+digs,digs);
string strVal = StringFormat(fmt,9.123456678);
Manchmal steht man sich einfach selber im Weg :(
Grund der Beschwerde: