Thread Kaufm. Runden (34 answers)
Opened by mikdoe at 2009-07-06 16:35

mikdoe
 2009-07-07 17:25
#122933 #122933
User since
2007-08-13
98 Artikel
BenutzerIn
[default_avatar]
Hallo Taulmarill,

das eigentliche Problem hat damit angefangen, dass bei mir sporadisch nach der Multiplikation mit 100 der Scalar plötzlich ein .00 hinten hatte. Ich kann es nicht mehr reproduzieren, war aber so. Da wurde dann aus .87 * 100 = 87.00
Ist zwar mathematisch korrekt, kann ich aber nicht gebrauchen, weil dies ein Betragsfeld für Euro und Cent ohne jegliche Dezimalstellen ist. Sprich für 87 Cent muss ich in das Feld auch 87 eintragen.

Und weil also 87.00 für mich nicht brauchbar war, fing ich mit int() an, diese .00 wieder abzuschneiden. Leider wird bei int() nicht einfach nur abgeschnitten sondern der Wert verändert. Dies hat mich nun zu der Auffassung gebracht, dass sämtliche Funktionen, die zum Abschneiden int(), sprintf() oder floor() verwenden nicht zuverlässig sind. Beispiele hab ich ja gebracht.

Daher die Frage 1: Wie kann ich erreichen, dass ich bei der Multiplikation eines Wertes mit max. zwei Nachkommastellen anschließend einen Wert ohne jegliche Nachkommastellen bekomme?

Und Frage 2: Warum ist in meinen drei Beispielen nicht ein einziges Abschneiden-Ergebnis richtig? Wie soll ich mich auf eine Runden-Funktion verlassen, die eine von diesen drei untauglichen Abschneide-Möglichkeiten verwendet?

Danke und Grüße

View full thread Kaufm. Runden