I am trying to print out the floating point values 0x40a00000 and 0xc0200000. But the values that I print out and the correct values according to the IEEE-754 Floating Point Converter (https://www.h-schmidt.net/FloatConverter/IEEE754.html) are completely different:
The values I should get according to the IEEE converter:
0x3F800000 = 5.00 0xBF000000 = -2.50
The values I get when running:
float tmp1 = 0x40a00000; float tmp2 = 0xc0200000; printf("tmp1 = %.2f\n", tmp1); printf("tmp2 = %.2f\n", tmp2);
is
tmp1 = 1084227584.00 tmp2 = 3223322624.00
For some reason my C code isn't formatting the bits of the floating point values according to IEEE standards and is instead formatting them as if it were an int with a decimal point
These are assigning the float representation of the hexadecimal numbers to the floats.
Instead, do this:
int i1 = 0x40a00000; int i2 = 0xc0200000; float tmp1, tmp2; memcpy(&tmp1, &i1, sizeof(int)); memcpy(&tmp2, &i2, sizeof(int));
Print them:
printf("tmp1 = %.2f\n", tmp1); printf("tmp2 = %.2f\n", tmp2);
Output:
tmp1 = 5.00
tmp2 = -2.50
Full example:
#include#include int main(void) { int i1 = 0x40a00000; int i2 = 0xc0200000; float tmp1, tmp2; memcpy(&tmp1, &i1, sizeof(int)); memcpy(&tmp2, &i2, sizeof(int)); printf("tmp1 = %.2f\n", tmp1); printf("tmp2 = %.2f\n", tmp2); }