Я прибыл последним, поэтому скажу что-то другоеВы округлили 0.5
до 1
, не используя double
!Используйте decimal
с.double
нехорошо иметь "точные" цифры.
Запустите этот фрагмент кода и получайте удовольствие (обратите внимание, что есть / была "ошибка" в моно на числах вроде 0,49999999999999994 , поэтому для запуска его на ideone мне пришлось изменить егонемного, чтобы попытаться округлить 1,5: http://ideone.com/57XAYV)
public static void Main()
{
double d = 1.0;
d -= 0.3;
d -= 0.2;
Console.WriteLine("Standard formatting: {0}", d); // 0.5
Console.WriteLine("Internal Representation: {0:r}", d); // 0.49999999999999994
Console.WriteLine("Console WriteLine 0 decimals: {0:0}", d); // 1
Console.WriteLine("0 decimals Math.Round: {0}", Math.Round(d, MidpointRounding.AwayFromZero)); // 0
Console.WriteLine("15 decimals then 0 decimals Math.Round: {0}", Math.Round(Math.Round(d, 15, MidpointRounding.AwayFromZero), MidpointRounding.AwayFromZero)); // 1
}