好吧,我意識到這是早在一個星期天,所以我希望我只是缺少明顯的東西:C#Math.Round錯誤?
我有這樣的功能:
private decimal CashConversion(decimal amount, decimal ratio)
{
if (ratio == 1) return amount;
decimal convertedAmount = amount/ratio;
return Math.Round(convertedAmount, 2);
}
當我這樣稱呼它:
decimal tax = CashConversion(96.53, 15);
「稅」變量等於6.43。但是,96.53/15是6.435333333333333。將其平分到2位應該返回6.44。我在這裏錯過了什麼嗎?
類似於[爲什麼.NET使用銀行的舍入爲默認值?(http://stackoverflow.com/questions/311696/why-does-net-use-bankers作爲默認) – Eranga
有些東西你沒有告訴我們你的代碼,因爲我得到6.44當[我嘗試](http://ideone.com/wHj19) –
正如Ben Voigt所說,這不是代碼。首先,這是不正確的(你必須爲參數使用「decimal」值 - 你傳遞了一個'double')。修正後,確實返回'6.44'。您選擇的正確答案是錯誤的 - 銀行家的四捨五入僅適用於中點,因此它適用於「6.435」,而不適用於「6.4353」。請確保讓示例代碼儘可能接近您的實際代碼,並確保它確實能夠編譯,運行並顯示您正在討論的錯誤。您可能不會在實際代碼中持續使用「decimal」。 – Luaan