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