Hallo Leute,
habe hier ein rechnerisches Problem in einem VB-Programm. Rein programmtechnisch ist eine Änderung aufwendig, ich müsste einige Programmteile neu schreiben und es handelt sich mittlerweile um ein größeres Projekt.
Dieses Phänomen tritt nur bei einzelnen Zahlen auf, ich weiß nicht, ob man es überhaupt als Rundungs- oder Rechenfehler bezeichnen kann, jedenfalls geht es um ein Modul für das Berechnen von Steueranteilen:
Berechnung des Nettowertes aus Bruttowert und Prozentsatz:
sngNetto = sngBrutto / ((100 + sngMwSt) / 100)
bei 19 % ergibt das bei 697,- Brutto ein Netto von 585,71
(eigentlich also 585,714285 Periode)
Nun ergibt sich eine Veränderung eines schon bestehenden Bruttowertes, wenn er aus Nettowert und Prozentsatz neu errechnet wird:
sngBrutto = (sngNetto * (100 + sngMwSt)) / 100
jetzt kommt 696,99 heraus
(also 696,9946)
Da ich mit kaufmännischer Rundung hier anscheinend nicht weiterkomme, frage ich, ob es vielleicht eine andere Methode gibt, das Problem mathematisch zu lösen. Oder eine Erhöhung der Nachkommastellung + Rundung?
Thx,
UselessUser
Programmieren - alles kontrollieren 4.940 Themen, 20.676 Beiträge
Danke für eure Beiträge! Ja, ich glaube nach einigen Rechenversuchen auch nicht mehr so an eine mathematische Lösung, das mit der Strichrechnung hat bei mir nicht hingehauen.
Ich werde es wohl doch "organisatorisch" machen. In einer Funktion wird überprüft, ob man auf den Nettowert in der Eingabemaske durch die erste Formel kommt, sofern schon ein Brutto eingegeben wurde:
sngNetto = sngBrutto / ((100 + sngMwSt) / 100)
Ist das der Fall, wird der alte Bruttowert beibehalten. Wenn nicht, wurde der Nettowert verändert und dann der Bruttowert nach der zweiten Formel neu errechnet.
Mal sehen, ob es klappt ...
MfG
UselessUser