Я знаю, вопрос кажется странным. Программисты иногда слишком много думают. Пожалуйста, прочитайте...
В C я использую целые числа с подписью и без знака. Мне нравится тот факт, что компилятор предупреждает меня, если я делаю такие вещи, как назначение целого числа со знаком в неподписанную переменную. Я получаю предупреждения, если я сравниваю подписанные целые числа без знака и многое другое.
Мне нравятся эти предупреждения. Они помогают мне сохранить правильный код.
Почему у нас нет такой же роскоши для поплавков? Квадратный корень, безусловно, никогда не вернет отрицательное число. Есть и другие места, где отрицательное значение float не имеет никакого значения. Идеальный кандидат для неподписанного поплавка.
Btw - Я не очень увлекаюсь одним дополнительным битом точности, который мог бы получить, удалив флаг знака из поплавков. Я очень доволен float
, как сейчас. Я бы просто хотел пометить float как unsigned иногда и получить такие же предупреждения, которые я получаю с целыми числами.
Я не знаю ни одного языка программирования, который поддерживает беззнаковые числа с плавающей запятой.
Любая идея, почему они не существуют?
EDIT: Я знаю, что у x87 FPU нет инструкций по работе с неподписанными поплавками. Позволяет использовать только подписанные поплавковые инструкции. Неправильное использование (например, переход к нулю) можно рассматривать как поведение undefined так же, как переполнение целых чисел со знаком undefined.