카테고리 없음

[펌웨어] 이상한 현상 발견 (printf를 float과 uint32_t 관련)

newbeverse 2025. 1. 9. 16:48

float 3.14를 uint32_t 로 변경하면, 3이 출력되어야한다.

float value = 3.14f;
uint32_t converter = value;
printf("value       : %f\n", value);
printf("converter   : %f\n", converter);
  • 컴파일시 결과 값이, 3.14와 3.139999 가 출력된다.
  • converter 는 uint32_t 였으므로, %f 이 아닌, %u (unsigned)로 출력했어야 한다.
  • 그래서 %f로 출력이 잘못돼서 발생하는 문제인지는 모르겠다.

정상적인 예시

float value = 3.14f;
uint32_t converter = value;
printf("value       : %f\n", value);
printf("converter   : %u\n", converter);
  • converter는 3이 출력된다.

 

 

반응형