я решил воссоздать мой вопрос:Правильно круглые финансовые данные
decimal dTotal = 0m;
foreach (DictionaryEntry item in _totals)
{
if (!string.IsNullOrEmpty(item.Value.ToString()))
{
dTotal += Convert.ToDecimal(item.Value);
}
}
Console.WriteLine(dTotal/3600m);
Console.WriteLine(decimal.Round(dTotal/3600m, 2));
Console.WriteLine(decimal.Divide(dTotal, 3600m));
Приведенный выше код возвращает:
579,99722222222222222222222222
580,00
579.99722222222222222222222222
Итак, вот откуда у меня проблемы, мне действительно нужно просто показать 579.99
; но любой раунд, будь то decimal.Round
или Math.Round
все еще возвращает 580
; даже строковые форматы для {0:F}
return 580.00
.
Как я могу это сделать правильно?
Попробуйте делить на 3600.0 и посмотреть, работает ли это? – simchona
@simchona it woudln't work, что int получает повышение в два раза – BlackBear
Это может быть ошибка округления, вызванная самим внутренним представлением. Вы пробовали с десятичной запятой? – BlackBear