C# runden auf n Nachkommastellen geht nicht?

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.

MatthiasHerz  16.08.2018, 19:50

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.

0

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