我有以下代码(从浮点数转换为十六进制数):
float decimal = 12.1;
int num = (int) decimal; // <- (Method 1)
int num2 = (*(int*) &decimal); // <- (Method 2)
cout << hex << num << "\n";
cout << hex << num2 << "\n";
结果:
0xc
0x4141999a
第二个以十六进制输出正确的浮点数。
我有两个问题:
方法1
int num = (int) decimal;
在方法 1 中,您对十进制数执行
floor()
。所以结果是 12。
方法2
int num2 = (*(int*) &decimal);
在方法 2 中,您获取 32 位十进制数并将其作为整数打印。所以你会得到一个你认为的奇怪的数字,它只是十六进制的浮点数。