Номера с плавающей точкой IEEE имеют бит, назначенный для обозначения знака, что означает, что вы можете технически иметь разные двоичные представления нуля (+0 и -0). Есть ли арифметическая операция, которую я мог бы сделать, например, в C, которая приводит к отрицательному значению с плавающей точкой?
Этот вопрос вдохновлен другим, который ставит под сомнение, можете ли вы безопасно сравнить 0.0f
с помощью ==
, и я еще раз подумал, есть ли другие способы представления нуля, которые могут привести к тому, что float1 == 0.0f
сломается, казалось бы, идеально равные значения.
[Изменить] Пожалуйста, не комментируйте безопасность сравнения поплавков за равенство! Я не пытаюсь добавить к этому переполненному ведру повторяющихся вопросов.