I am getting unpredictable behavior of decimal in C#.NET. Here is the code snippet
decimal num1 = 2474M;
decimal num2 = 4947M;
decimal num3 = 4947M;
decimal sum = num1 + num2 + num3;
decimal perDouble1 = num1 / sum ;
decimal perDouble2 = num2 / sum ;
decimal perDouble3 = num3 / sum ;
decimal sumDouble = perDouble1 + perDouble2 + perDouble3;
Output: 1.0000000000000000000000000001M
If I change the numbers as
decimal num1 = 2474M;
decimal num2 = 4946M;
decimal num3 = 4947M;
Output as: 1.0000000000000000000000000000M
How I can avoid this?