20.03564 is not exactly representable as double or a float. That they are printed in the debugger this way, just means that the stored value is a close approximation of it, but it is impossible that the stored value is exactly 20.0356400000000000000000000000000000000000000000000000000000000000000000000000000000.
When you print the float or the double, and you get the same text representation, this does not mean that the float and the double are identical.
No, the double representation is much more close to the value you specify, but as all the additional digits happen to be 0, they are not printed.
For the float, there is just no reason to print more digits, as those are not significant, given the float resolution.
Maybe you should not use just a short 7 digits number like 20.03564 to see the difference double makes. Use something with more digits, like 20.0356412345678901234567890123456789012345678901234567890
Here you will loose something in any case.
Also note that the value printed by the debugger is also just an appriximation of the actual stored value.