Десятичный порядок сложения влияет на результаты

У меня есть система, которая выполняет множество вычислений с использованием десятичных знаков, иногда она складывает одни и те же числа, но возвращает разные результаты, +/- 0,000000000000000000000000001

Здесь это короткий пример:

decimal a = 2.016879990455473621256359079m;
decimal b = 0.8401819425625631128956517177m;
decimal c = 0.4507062854741283043456903406m;
decimal d = 6.7922317815078349615022988627m;

decimal result1 = a + b + c + d;
decimal result2 = a + d + c + b;

Console.WriteLine((result1 == result2) ? "Same" : "DIFFERENT");
Console.WriteLine(result1);
Console.WriteLine(result2);

Результат:

DIFFERENT
10.100000000000000000000000000
10.100000000000000000000000001

Различия настолько малы, что практического эффекта нет, но кто-нибудь видел что-то подобное раньше? Я ожидал, что при сложении одних и тех же чисел вы всегда получите одинаковые результаты.

5
задан BrandonAGr 2 June 2011 в 23:19
поделиться