@g00dv1n

Почему float a= 3.141593 и #define a 3.141593 при сравнении не равно?

Допустим есть такой код:
#define answer 3.141593

        float a =  3.141593;

        if(a < answer)
                 puts("low");
        else if(a > answer)
                puts("high");
        else
                puts("Win!");


Почему результат будет Low ? Догадываюсь, что разница в точности. Кто может глубже помочь разобраться в вопросе?
  • Вопрос задан
  • 264 просмотра
Решения вопроса 1
AtomKrieg
@AtomKrieg
Давай я поищу в Google за тебя
answer - double

#define d 3.141593
#define f 3.141593f
float a = 3.141593;

cout << "d cmp a: " << boolalpha << (d==a) << endl;
cout << "f cmp a: " << boolalpha << (f==a) << endl;

cout << setprecision(10);
cout << d << endl << f << endl;
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
AxisPod
@AxisPod
Вы хотя бы на хабре бы искали для начала, если уж лень искать везде.

habrahabr.ru/post/112953
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы