C# runden auf n Nachkommastellen geht nicht?
Hallo,
ich habe verschiedene Funktionen, die aber alle falsch Runden.
Die zwei Zahlen die korrekt zu runden sind, sind:
- 0,449 auf eine Nachkommastelle ==> Lösung: 0,5
- Math.Round()-Methode:
Math.Round(0,449, 1); ==> 0,4
Ich brauche eine Funktion, welche korrekt kaufmännisch rundet.
Frage Nummer 2:
Wie runde ich genau eine negative Zahl, zum Beispiel -0,5? Kommt da 0 oder -1 raus?
7 Antworten
Das ist korrektes kaufmännisches Runden entsprechend DIN 1333. Da auf eine Stelle gerundet wird, betrachtet man die zweite, diese ist eine 4 und damit wird abgerundet.
Hast das tatsächlich so im Code stehen?
Korrekt wäre …
Math.round(0.449, 1)
… mit Dezimalpunkt, nicht -komma.
Nachtrag:
https://www.mycsharp.de/wbb2/thread.php?threadid=77030 könnte Dir weiterhelfen. Der Thread liegt schon eine Weile zurück, aber die Code-Strukturen sind heute noch so.
Bei nochmaliger Betrachtung fiel mir gerade auf, dass Dein Code richtig gerechnet hat.
0,449 ergibt auf eine Nachkommastelle kaufmännisch gerundet 0,4. Relevant für das Runden ist die nächst kleinere Dezimalstelle. Das ist hier eine 4 und keine 5.
Willst das anders haben, müsstest alle vorhandenen Dezimalstellen von hinten nach vorne kaufmännisch runden.
Runden: in DIN 1333 "Zahlenangaben"
Um eine Zahl zu runden, addiert man zu ihr den halben Stellenwert der Rundestelle und läßt die Summe der hinter der Rundestelle stehenden Ziffern weg.
ähm, 0,449 ist auch kaufmännisch gerundet 0,4 richtig.
Was wäre denn deiner Meinung nach 0,449 korrekt auf eine Nachkommastelle gerundet?
Frage 2: -0,5 gerundet ist -1