Floating Point Math?

I was thinking there are any specific reason for this ??

Don't know, but there is an easy workaround:

float var = 12.345678;
void setup() {

  Serial.begin(250000);
  printfloat(var);

}

void loop() {

}

void printfloat(float v)
{
  int32_t dec = (v - (int32_t)v) * 1000000; // depending on the number of decimal digits you want
  printf("Float value is = %d.%d\n", (int32_t)v, dec);
}