Warum wird Math.Round (0,125, 2) auf 0,12 gerundet?VB.Net Warum macht Math.Round 5 auf die nächste gerade Zahl, und was kann ich dagegen tun?
Dim foo As Decimal
foo = Math.Round(0.125, 2)
foo ist jetzt 0,12, aber es sollte b 0,13
ich es gehört, weil einige Standard in .Net rundet auf die nächste gerade Zahl, aber das ist nur schlecht math. 12.5 wird auf 12 Runden abgerundet, aber 13.5 Runden werden auf 14 Runden aufgeteilt. Gibt es einen Weg dies zu beheben?
FYI, dies ist bekannt als „bankübliche Rundung“. –
Es ist Banker Rundung. Verwenden Sie die Überladung Round(), die ein MidpointRounding-Argument verwendet, um es zu ändern. –
http://stackoverflow.com/questions/311696/why-does-net-use-bankers-rounding-as-default – Will