vale quanto segue:Decimal.Round per MidpointRounding
var rounded = Decimal.Round(7.635m, 2);
//rounded: 7.63
Questo, per me, è un comportamento sbagliato e inaspettato. Assumerei il valore di arrotondato per essere 7,64.
Per raggiungere questo obiettivo, posso fare:
var rounded = Decimal.Round(7.635m, 2, MidpointRounding.AwayFromZero);
//rounded: 7.64
Come può questo non essere il comportamento predefinito di Decimal.Round
? Qualche buona ragione per questo?
Date un'occhiata a http://stackoverflow.com/a/977807/525138, non credo che si può cambiare il valore di default. – Dutts
Suppongo che abbiano scelto questo come predefinito perché la maggior parte degli arrotondamenti sui decimali viene effettuata in valuta. Sfortunatamente, è anche l'impostazione predefinita per double.Round(), che in realtà occupa moltissimo molti calcoli matematici, in particolare quelli che calcolano le coordinate dei pixel. –
Qualcuno nota che il round-to-even ** predefinito è arrotondato a dispari nel tuo esempio **? !! Ho trovato questo comportamento (errato?) Su una macchina ma non su un'altra. Anody sa cosa sta succedendo? – Timo