skip to main content

kiesler.at

eprog.jar
updated by rck, 2006-03-27

Die Eprog.jar ist eine Funktionsbibliothek, die Informatik-Studenten auf der TU Wien Einführung in die Programmierung erleichtern soll. Tatsache ist, dass es hier möglicherweise das eine oder andere Problem gibt. Dieser Artikel beleuchtet den "rückgewonnenen" Quellcode.

1 | 2 | 3 | 4 | 5 | 6 | 7 | 8

Fixkommaausgabe und -umwandlung

Bis auf die Fixkommaausgabe greifen alle EprogIO-Ausgaberoutinen auf System.out.print zu. Ein Beispiel:

25         public static void println(String s) {
26                 System.out.println(s);
27         }

Ich möchte mich deshalb voll und ganz auf die 6, sehr verwandten, Ausgabefunktionen und Umwandlungsfunktionen für Fließkommazahlen beschränken.

String toFixed(double d)

125         public static String toFixed(double d) {
126                 DecimalFormat decimalformat = new DecimalFormat("#0.000");
127                 DecimalFormatSymbols decimalformatsymbols =
                          decimalformat.getDecimalFormatSymbols();

128                 decimalformatsymbols.setDecimalSeparator('.');
129                 decimalformat.setDecimalFormatSymbols(decimalformatsymbols);
130                 return decimalformat.format(d);
131         }

Beschreibung toFixed

126 Wir legen ein DecimalFormat Objekt an, welches uns die ganze Arbeit abnimmt. Es möge sich schon mal mental darauf einstellen, dass wir Zahlen gerne mit drei Nachkommastellen hätten und diese mit einem . (nicht etwa ,) vom Rest getrennt sind.

127 Wir legen auch noch ein paar Symbole für die Zahlenausgabe an. Zuständig ist dafür DecimalFormatSymbols, welches uns so Dinge wie Tausendertrennung, Nachkommatrennung, zur Verfügung stehende Ziffern, etc. zur Verfügung stellt.

128 hier geben wir nochmal an, dass wir gerne ein . als Nachkommatrennung hätten. Wir sind da stur.

129 Die schönsten DecimalFormatSymbols nützen nichts, wenn unser DecimalFormat nichts davon weis.

130 Wir liefern die korrekt formatierte Version unserer Zahl zurück.

Zusammenfassung Fixkommadarstellung

imho. sehr schön gelöst. Was mir unklar ist: Wieso 6x die ziemlich genau gleiche Methode? (3x double, 3x float).

Wie wäre es zB mit

1 static void printFixedln(double d) {
2         System.out.println(toFixed(d));
3 }

Mir ist an dieser Stelle nicht klar, ob JAVA den Code so optimiert hat und 6x hingeschrieben (das wäre gut) oder er von Anfang an so programmiert war (das wäre nicht so gut; ändert man an einer Stelle...).

1 | 2 | 3 | 4 | 5 | 6 | 7 | 8



RSSComments - Make a comment
The comments are owned by the poster. We are not responsible for its content.
  • EOF

    Posted on 2004-06-10 01:58:11 By Anonymous

    Hab readWord jetzt mal zu einem alleinstehenden Programm abgeändert und ein paar Ausgaben reingetan. Und siehe da: bei EOF liefert println (c) ein Fragezeichen. Natürlich steht in c nicht wirklich ein Fragezeichen, das wird nur von println so gemacht. EOF ist nämlich in unicode nicht definiert!!! Ein einfaches Character.isDefined (c) löst das Problem!

    [Reply ]

    • Re: EOF

      Posted on 2004-06-10 17:20:47 By rck[110]

      changed On 2004-06-10 17:21:41 Edited By rck (reason: )

      Du meinst also, da gehört ein Check auf "?" (wobei für ? das EOF-Zeichen einzusetzen ist) und nicht auf -1?

      [Reply ]

RSSAll Articles
2008, 2007, 2006, 2005, 2004