我有一个棘手的问题,我不明白。我有一个uint8_t数组,我需要转换为32位浮点数。我正在使用memcpy来实现这一点......但是四舍五入似乎是关闭的。有人可以提前解释一下这个问题的解释/解决方案。 coefficientByteSwap数组包含两个系数,一个在前四个字节中,另一个在后四个字节中。
static float32_t coefficient[ALLSENSORS][NUM_QUADRATIC_FIELDS];
uint8_t coefficientByteSwap[8];
memcpy(&coefficient[sensor][2], &coefficientByteSwap[0], sizeof(float32_t));
memcpy(&coefficient[sensor][3], &coefficientByteSwap[4], sizeof(float32_t));
示例:
coefficientByteSwap[0] = 0xE8
coefficientByteSwap[1] = 0x32
coefficientByteSwap[2] = 0xB5
coefficientByteSwap[3] = 0xBC
应为浮点值:-.022119 但是当我把它打印出来时它出来了:-.022119000554
答案 0 :(得分:3)
你的假设是错误的。 看看这个:
float f = -.022119;
std::cout << std::setprecision(20) << f << std::endl;
打印: -0.022119000554084778