В этом примере значение 1.5F имеет точное представление в IEEE 754 (и почти во всех других возможных двоичных или десятичных представлениях с плавающей запятой), поэтому ответ почти наверняка будет положительным. Однако нет никакой гарантии, и могут быть компиляторы, которым не удается достичь результата.
Если изменить значение на единицу без точного двоичного представления , такого как 5.1F, результат будет далек от гарантированного.
Путь, путь, путь назад в своей превосходной классической книге " Элементы стиля программирования ", Kernighan & Plauger сказал:
Один мудрый программист однажды сказал: «Числа с плавающей точкой похожи на груды песка; каждый раз, когда вы перемещаете одну, вы теряете немного песка и собираете немного грязи». И после нескольких вычислений все может стать довольно грязным.
(Это одна из двух фраз в книге, которую я выделил много лет назад 1 .)
Они также наблюдают:
- 10,0 х 0,1 вряд ли когда-либо 1,0.
- Не сравнивайте числа с плавающей запятой только для равенства
Эти наблюдения были сделаны в 1978 году (для второго издания), но до сих пор остаются в силе сегодня.
Если вопрос рассматривается в наиболее ограниченном объеме, возможно, вы в порядке. Если вопрос сильно различается, вы, скорее всего, будете укушены, чем нет, и, вероятно, вы будете укушены раньше, а не позже.
1 Другая выделенная фраза (минус маркеры):
- вызов подпрограммы позволяет нам суммировать нарушения в списке аргументов [...]
- [t] Сама подпрограмма суммирует закономерности кода [...]