我使用Math.Round(1.7346, 2, AwayFromZero)
這應該給我1,74 - 但它實際上給我1.73。回合1,7346至1,74
我知道那是因爲這個:
「由於精度,可能導致從代表 十進制值作爲浮點數或浮點值執行算術 經營虧損的,在有些情況下,Round(Double, Int32,MidpointRounding)方法可能不會出現在模式參數指定的中點 的值中,這在 下面的示例中進行了說明,其中2.135被舍入爲2.13而不是2.14 發生這種情況因爲內部方法將值乘以10 * 數字,並且在這種情況下的乘法操作會遭受 的精度損失。「
但是我應該使用哪種.NET方法來正確舍入?
'MidpointRounding'纔會生效時以下你想要的數字的東西,就像是「50000」。對於其他情況,「Round」不辜負它的名稱 - 它將*舍入*到具有許多小數位的最接近的數字。 – cHao