Éditfeld und Currency,Zahl auf zwei stellen hintern Komma formatieren?



  • Hi!

    Ich möchte, wenn ich in ein Editfeld eine Zahl z.B. "12,2" eingebe, dass sie bei OnExit auf zwei stellen hintern komma gerundet wird. In diesem Fall auf "12,20". Möchte mit Currency Variablen arbeiten, weil es ein Programm mit Geldrechnungen werden soll!

    Bitte um hilfe! 😕

    Danke! 🙂



  • Dir ist die Problematik mit den Fließkommazahlen bewußt? Rundungsfehler auf Grund nicht in der Mantisse darstellbarer Nachkommaanteile?

    Wie hat ein Kollege mal gesagt: Fließkommazahlen nimmt man zum Schätzen, Ganzzahlen zum Messen.



  • Ich habe meine zahlen mit dieser Methode gerunded da RoundTo nicht funktioniert
    hat

    //Methode zum Runden von zahlen
    double Round(double amount, int power_of_ten)
    {
    double pten; /* 10 hoch power_of_ten */
    double intpart; /* Integerteil der durch pten geteilten Zahl */
    double halfsign; /* Plus oder Minus 0.5 für korrekte Rundung */
    double temp;
    temp = (double)power_of_ten;
    
    pten= pow((double)(10), temp); /* auf Zehnerpotenz definieren */
    halfsign = (amount < 0.0) ? - 0.5 : 0.5;
    modf( (double)(amount * pten + halfsign), &intpart);
    return ((double)(intpart / pten) );
    }
    


  • Hi,

    entweder Du bleibst im AnsiString (Edit->Text) einfach mit der Methode Pos nach "," suchen und dann die dritte Stelle ab dem Komma einfach abfragen: <5 zweite Stelle lassen ansonsten um eins erhöhen.

    Da muss man aber relativ viele Stingmanipulationen vornehmen, vielleicht besser, mit der Methode ToDouble in einen Double konvertieren, dann folgende kleine Funktion fürs kaufmännische Runden nehmen

    double KfmRunden(double zahl)
    { long int zwert=(zahl*100)+0.5;
      return zwert/100.0;
    }
    

    und dann mit

    FloatToStrF(wert, ffFixed, 8, 2))
    

    zurück.

    OLi



  • Danke! 😃 👍


Anmelden zum Antworten