Bei Study anmelden

Diese Seite ist der öffentliche eMedys-Auftritt. Dein Konto und deine privaten Inhalte laufen auf Study; die Anmeldung öffnet sich dort in einem eigenen Fenster.

Zahlen lesen, ohne ihre Bedeutung zu erraten

Einen engen Formatvertrag und einen passenden Rückgabetyp wählen.

Das Preisfeld unseres Lehrbeispiels verlangt einen String mit genau zwei Nachkommastellen. Ein getrenntes Formatfeld wählt de-DE oder en-US; Währung steht ebenfalls separat. 1.234,50 und 1,234.50 können so denselben Wert bezeichnen. Ohne Formatvertrag ist 1,234 mehrdeutig; unter unserem Zwei-Stellen-Vertrag ist es ungültig. Entferne keine beliebigen Buchstaben: Aus abc12 würde sonst ein scheinbar gültiger Preis. Prüfe Eingangstyp, vollständige Zeichenfolge, Vorzeichen und erlaubten Bereich. Bewahre den Wert als Decimal aus einer validierten Zeichenfolge oder als ganze Untereinheiten. Eine nachträgliche float-Rückgabe kann die Zusage exakter Dezimaldarstellung verlieren. Auch Decimal kennt NaN und Infinity; sie sind nach unserem Vertrag keine Preise.

Ein Beispiel

Eine kleine Testtabelle enthält 1.234,50/de-DE→1234.50, 1,234.50/en-US→1234.50, 1,234/de-DE→invalid, abc12→invalid, leer→invalid, True→invalid, -2,00→invalid und NaN→invalid. Die Ablehnung negativer Preise ist eine bewusst gewählte Regel dieses Katalogs; ein anderer Vertrag könnte Gutschriften zulassen. Der Code zeigt nur den bereits normalisierten Wert, keinen universellen Locale-Parser. Python 3.11 · Lehrbeispiel from decimal import Decimal price = Decimal("12.30") assert price.is_finite() print(price + Decimal("0.20")) Erwartete Ausgabe 12.50

Mit meinem Konto üben →

Alle Lernwege