Your ull is 18446744073709551615 which lies between the floats 18446744073709551616.0 and 18446744073709549568.0. It is much closer to 18446744073709551616.0, so that's the value you get.
You've chosen "fixed" output format, so precision is irrelevant