У меня есть система, которая выполняет множество вычислений с использованием десятичных знаков, иногда она складывает одни и те же числа, но возвращает разные результаты, +/- 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
Различия настолько малы, что практического эффекта нет, но кто-нибудь видел что-то подобное раньше? Я ожидал, что при сложении одних и тех же чисел вы всегда получите одинаковые результаты.