никогда не пытайтесь сделать сравнение равных
double da, db;
...
if (da == db) тогда что-то.
помните, что C использует double по умолчанию, поэтому, если вы хотите сделать одинарную точность, помните об этом
float fa, fb;
...
fa =fb + 1.0;
конвертирует fb в double, делает двойное добавление, затем конвертирует в single и делает одинаковое
Вместо
fa = fb + 1.0F.
все одинарные.
Если вы собираетесь использовать целое число, например 1,0, не делайте его десятичным в своем коде.вы получите больше надежности от своих компиляторов / инструментов, если сможете минимизировать числа ascii.поэтому
fa = fb + 1;
или вместо
fa = fb + 0.3333333F;
сделать что-то подобное (если интересует точность).
fc = 1;fc = fc / 3;fa = fb + fc;
Много и много других, плавающая точка болезненна, компиляторы и библиотеки не так хороши, fpus имеет ошибки, а IEEE исключительно болезнен и приводит к большему количеству ошибок.К сожалению, это мир, в котором мы живем на большинстве платформ.