Mobiler MwSt-Rechner 4.1 und der nervende Dezimal-Gruppierungs-Bug (Update)

Mobiler MwSt-Rechner 4.1 und der nervende Dezimal-Gruppierungs-Bug (Update)

Nach etwa 2 12 Jahren der verschiedensten Updates vom MwSt-Rechner schlug auch bei diesem Projekt einmal der Bug-Teufel zu — keine Software ist von Fehlern gefeit. Wie einige bereits bemerkt haben, rechnet der MwSt-Rechner mit der aktuellsten Version 4.1 bei größeren Zahlen nicht mehr richtig. Sobald bei einer der Zahlen über 3 Stellen vorkommen kann es (je nach Rechenweg) zu einem vollkommen falschen Ergebnis kommen. Ein Missgeschick, das so eigentlich nicht hätte vorkommen dürfen, aber bei den Test-Aufgaben fehlte tatsächlich alle Rechenwege mit Dezimalzahlen jenseits der 1000 einmal zu rechnen.

[Update]
Aber das wichtigste gleich zuerst: Durch eine beschleunigte Abwicklung durch Apple steht seit heute Nacht (10. auf 11.12.) das Update auf Version 4.2 bereits zur Verfügung. Mit dem Update wurden einige Anpassungen durchgeführt, die den Fehler durch Tausender-Gruppierung in den verschiedenen Regional-Einstellungen bereinigt haben sollte.
[/Update]

Wie es zu dem Fehler kam ist das eigentlich interessante. Ein Grund für die Entwicklung des MwSt-Rechners war, dass der überwiegende Teil der existierenden MwSt-Rechner nicht genau gerechnet haben. Ausschlaggebend für die Ungenauigkeit ist der Variablen-Typ „float”, der nur eine sogenannte „einfache Genauigkeit” bietet. Der Variablen-Typ verbietet sich eigentlich immer dann, wenn mit Komma-Zahlen genau gerechnet werden soll.

Wichtig war mir daher  nicht nur die einfache Bedienung, sondern auch , dass der MwSt-Rechner mit einer höheren Genauigkeit arbeitet. Er sollte dabei auch unbedingt die länderabhängige Formatierung von Dezimalzahlen beachten. Je nach Land sollte also der Dezimal-Trenner ein Punkt oder ein Komma sein und auch die Tausender-Gruppierung sollte passen um die Lesbarkeit größerer Zahlen zu vereinfachen.

Diese Punkte unter einen Hut zu bekommen war nicht immer einfach, da die App regelmäßig intern zwischen Zahlen und Zeichenketten (für die formatierte Aus-/Eingabe) konvertiert werden musste. Genau bei dieser Umwandlung kam es bei der Version 4.1 zu einem Fehler. Ohne jetzt zu sehr in das Detail zu gehen: Auslöser des Fehlers war, dass der an einer Codestelle verwendete Weg bei der Umwandlung nur teilweise die Lokalisierungs-Regeln berücksichtigt. Während das korrekte Zeichen zum trennen von Kommazahlen beachtet wurde führten das Tausender-Trennzeichen zu einer falschen Umwandlung.

Wie man auf dem Bild sehen kann, wurde der MwSt-Betrag noch korrekt berechnet, gerundet und entsprechend formatiert ausgegeben. Beim berechnen des Brutto-Betrags allerdings wurde der MwSt-Betrag intern über ein alternativen Weg in eine Zahl umgewandelt, der sich an dieser Stelle aus verschiedenen Gründen angeboten hat. Das Ergebnis kann man nun beim Brutto-Betrag sehen — alles hinter dem Tausender-Trenner wurde ignoriert und anstatt den 1900 Eur wurde nur 1 Euro auf den Netto-Betrag addiert.

Wie sieht das Fazit aus diesem Fehler aus? Zuerst wird die Liste mit den Test-Ausgaben wurde um das testen mit dem Tausender-Trennzeichen erweitert.  Die automatisch durchgeführten Unit-Tests werden ebenfalls deutlich erweitert um mehr verschiedene Eingabe-Methoden zu prüfen. Gleichzeitig wird verstärkt auf die Unterschiede zwischen den einzelnen Ländern (DE/AT und CH) geachtet werden inklusive dem Wechsel der Regional-Einstellungen während die Anwendung noch aktiv ist. Bei den kommenden Versionen wird auch versucht soweit möglich alle Umwandlungen soweit abzusichern, dass eine falsche Umwandlung soweit möglich abgefangen werden kann.