IMHO, problem is that floating point values can't be represented exactly.
When you calculate Fsgpa_tot, some small errors starts to accumulate (very small, in order 10e-13 or 10e-14), and results probably goes just a tiny bit over 9,165, enough to round it to 9,17.
When you try with hard coded values, compiler calculates Fsgpa_tot in advance, maybe using single precision or maybe just different order. Now results goes just a tiny bit under 9,165, resulting in rounding to 9,16.
Try to add this after line 15 to see if this is what is going on:
WriteLn('Total - 879.84 = ' + floattostr(Fsgpa_tot - 879.84));
WriteLn('Formula - 9.165 = ' + floattostr(Fcgpa_round - 9.165));
P.S.:
Why aren't you using Free Pascal's rounding functions?