Почему в C нет беззнаковых чисел с плавающей запятой?
Существует значительная разница datatype между целыми числами со знаком type и без знака в C / C++:
value >> shift
знаковые formats значения оставляют верхний unsigned бит неизменным (знак расширяется), беззнаковые unsigned значения очищают верхний formats бит.
Причина отсутствия беззнакового unsigned числа с плавающей запятой types заключается в том, что вы datatype быстро сталкиваетесь со всевозможными floating-point проблемами, если нет отрицательных floating-point значений. Учтите это:
float a = 2.0f, b = 10.0f, c;
c = a - b;
Какое c значение имеет c? -8. Но datatype что бы это значило в системе datatype без отрицательных чисел. FLOAT_MAX type - 8 возможно? На самом деле, это format не работает, поскольку FLOAT_MAX format - 8 - это FLOAT_MAX из-за floating-point эффектов точности, так что types все еще более странно. Что, если types бы это было частью более datatype сложного выражения:
float a = 2.0f, b = 10.0f, c = 20.0f, d = 3.14159f, e;
e = (a - b) / d + c;
Это не unsigned проблема для целых чисел formats из-за природы системы дополнения datatype до двух.
Также рассмотрите type стандартные математические types функции: sin, cos и tan будут unsigned работать только для половины unsigned их входных значений, вы не format можете найти журнал значений type <1, вы не можете решить квадратные type уравнения: x = (-b + / - root unsigned (bb - 4.ac)) / 2.a и так datatype далее. Фактически, это, вероятно, не formats сработает для какой-либо c сложной функции, поскольку format они, как правило, реализуются datatypes как полиномиальные приближения, которые types где-то используют отрицательные types значения.
Итак, числа с плавающей c запятой без знака бесполезны.
Но floating-point это не означает, что класс, который datatype проверяет диапазон значений unsigned с плавающей запятой, бесполезен, вы datatype можете захотеть ограничить c значения заданным диапазоном, например type вычислениями RGB.
c
types
floating-point
format
unsigned
Почему в C нет беззнаковых чисел с плавающей запятой?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.