나는 이해가 안되는 까다로운 문제가 있습니다. 32 비트 부동 소수점으로 변환해야하는 uint8_t 배열이 있습니다. 나는 그것을 달성하기 위해 memcpy를 사용하고있다. 그러나 반올림은 꺼져있는 것처럼 보인다. 누군가이 현상에 대해 설명해 주시겠습니까 /이 문제에 대한 해결책, 미리 감사드립니다. coefficientByteSwap 배열에는 첫 번째 4 바이트에 두 개의 계수가 있고 두 번째 4 바이트에 다른 계수가 들어 있습니다.memcpy를 사용한 부동 소수점 정밀도 C++
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
간접 캐스팅 아마 좋은 생각이다! –
해당 숫자를 부동 소수점으로 표시 할 수 없습니다. 더 정밀도를 원하면'double'을 대신 사용할 수 있습니다. 그러나 유한 크기의 변수로 무한 정밀도를 얻는 방법은 없습니다. –
'BCB532E8'은 실제로'-0.222119'가 아니라'-0.022119000554'입니다. –