Strange float behaviour on Arduino Mega

I did some additional testing with binary representation of floats on both systems.

C++:

float myFloat = 0.090650305151939f;
printf ("%lu\n", sizeof (myFloat)); // 4 bytes
printf ("%.15f\n", myFloat);
printf ("%lu\n", sizeof (int)); // 4 bytes
int myInt = *(int *) &myFloat; // copy float bytes to int bytes
cout << myInt << endl; // 1035577054

Arduino:

float myFloat = 0.090650305151939f;

Serial.println (sizeof (myFloat)); // 4 bytes

Serial.println (String (myFloat, 15));

Serial.println (sizeof (long)); // 4 bytes

long myLong = *(long *) &myFloat; // copy float bytes to long bytes

Serial.println (myLong); // 1035577054

Binary both results are the same. The problem must be with the output then.