неожиданный результат при сравнении переменной с плавающей точкой и целого числа без знака - PullRequest
0 голосов
/ 14 октября 2019

У меня странная и неожиданная проблема со сравнением двух переменных в моем C-коде. Код написан с использованием Keil для микроконтроллера STM32F407. Обратите внимание на следующее:

if ( f1 > u1 )
 {
  // do some ...
 }

f1 - переменная с плавающей точкой, а u1 - целое число без знака. В режиме отладки f1 = 0,1 и u1 = 1600, но условие if возвращает true.

Кто-нибудь может решить проблему?

1 Ответ

0 голосов
/ 14 октября 2019

Ваш ввод правильный?

Я попробовал следующее, и это сработало:

#include <stdio.h>

int main() {
    float f1 = 0.1;
    unsigned int u1 = 1600;

    if ( f1 > u1 ) {
        printf("f1 > u1");
    } else {
        printf("error");
    }
}
...