Floating Point Math?

Is there any reason why arduino do not support floating point %f on sprintf formatting?

Because of the way printf() is implemented, supporting "%f" causes a bunch of floating point math functions to be pulled into your program WHETHER OR NOT YOU EVER USE %f (or ANY floating point in your program at all.)
That was seen as an unacceptable burden, back when avr-libc was first written, and "8k of program memory" was a "big" avr.
(it looks like float support IS included in printf/etc for Due. using sprintf() adds about 20k...)