FloatToStrF und andersprachige Windowsversionen



  • Hi,

    mit FloatToStrF kann man wunderbar Zahlen formatieren, inklusive Tausendertrennzeichen und Dezimalpunkt. Ist die Funktion so schlau und benutzt die länderspezifischen Trennzeichen der aktuellen Windows Installation oder werden die zur Compile Time fest in´s Programm gepackt.
    Sieht die Ausgabe eines deutschen Windows XP

    1.234,56

    auf einem englischen so aus?

    1,234.56

    Gruß,
    Doc



  • wenn man die Werte für DecimalSeparator und ThousandSeparator zur Laufzeit ändert und den Wert vorher und nachher ausgibt passt das, und ich glaub bei einem unsrer ausländischen Projekte ist die Anzeige auch richtig



  • Hallo

    Ja das Format ist erstmal von den Windowseinstellungen abhängig. Erst wenn du die schon genannten globalen Variablen setzt, werden andere Formate ausgegeben.

    Probleme macht das nur, wenn du formatierte Daten zwischen Systemen mit verschiedenen Einstellungen austauschst. Wenn du also auf einem englischem System mit FloatToStrF exportierst und auf einem deutschen mit StrToFloat impotierst, kommt die Funktion mit den fremden Trennzeichen nicht klar. Für Exporte solltest du also am besten ein festes, system- und länderunspezifisches Format nehmen (z.B. das was std::stringstream ohne weitere Optionen aus einem float macht, sollte meines Wissens auch ein ISO-Format sein).

    bis bald
    akari



  • Danke für die Antworten, ich konnte es gerade auf einem englischen Windows bestätigen. Die Formatierung erfolgt länderspezifisch anhand der aktuellen Systemeinstellungen.

    @Akari
    Ich weiss, bin damit schon früher ein Mal auf die Nase gefallen. Jetzt benutze ich es nur noch zum pretty printing.


Log in to reply