Я знаю, вопрос кажется странным. Программисты иногда слишком много думают. Пожалуйста, прочтите ...
В CI много использую signed
и unsigned
целые числа. Мне нравится, что компилятор предупреждает меня, если я делаю такие вещи, как присвоение целого числа со знаком беззнаковой переменной. Я получаю предупреждения, если сравниваю подписанные с целыми числами без знака и многое другое.
Мне нравятся эти предупреждения. Они помогают мне поддерживать правильный код.
Почему у нас нет такой же роскоши для поплавков? Квадратный корень никогда не вернет отрицательное число. Есть и другие места, где отрицательное значение с плавающей запятой не имеет значения. Идеальный кандидат для беззнакового числа с плавающей запятой.
Кстати, я не особо заинтересован в единственной дополнительной точности, которую я мог бы получить, удалив знаковый бит из поплавков. Я очень доволен float
такими, какие они есть сейчас. Я просто хотел бы иногда отмечать число с плавающей запятой как беззнаковое и получать такие же предупреждения, как и с целыми числами.
Я не знаю ни одного языка программирования, который поддерживает числа с плавающей запятой без знака.
Есть идеи, почему их не существует?
РЕДАКТИРОВАТЬ:
Я знаю, что FPU x87 не имеет инструкций по работе с беззнаковыми числами с плавающей запятой. Давайте просто воспользуемся подписанными инструкциями с плавающей запятой. Неправильное использование (например, опускание ниже нуля) может рассматриваться как неопределенное поведение точно так же, как переполнение целых чисел со знаком не определено.