Doesn't the 4.2 in the format string indicate that the number should have 4 digits before the decimal point and 2 after it(as well as signing it,enclosing negatives in brackets,padding with zeroes)???
4.2f, it is say 4 places minimum to be occupied including decimal point but after decimal only 2 places maximum allowed.
It will only restrict you in fractional part so .65 is allowed only
so 4.2f===> 12.65;
12345 //total 5 places occupied already
04.2f====> more than 4 places already occupied so no place remained for 0 padding so===> 12.65
(04.2f====> there is no minus sign ====>12.65
+(04.2f===> number is positive here so===> +12.65