Что такое float и double?

Рейтинг: 0Ответов: 2Опубликовано: 18.07.2023

Изучаю C# по книге Шилдта, где он коротко описал эти типы, мне же описания не хватило в силу того, что в школе информатику не трогали. Где можно узнать больше о понятиях точности, разряда, этого раздела в целом и соответствующих функциях, желательно начиная с фундаментальных вещей, поскольку я в этом новичок.

Ответы

▲ 2

Возможно, вы знаете, что числа бывают разные: натуральные, целые, рациональные(дроби) и т.д. Наиболее естественны, для "компьютера", целые (и в двоичном представлении :) ), а все другие приходится представлять в виде набора целых. Очень упрощенно, можно сказать, что существует несколько подходов к таком представлению рациональных чисел:

  • в лоб, хранить два целых числа, числитель и знаменатель. Обычно такой способ не используется, так как имеет такие недостатки, как нестабильная точность (и абсолютная и относительная), а так же неоднозначность представления (и интерпретации) такого числа, например 1/2 и 4/8 - мы должны интерпретировать как одно число или как два разных

  • с фиксированной точкой, мы используем одно целое число, просто "держа в уме", что часть значимых цифр представляют "дробную часть". Обычно такие типы называются decimal или money. Достоинством таких типов является стабильная абсолютная точность и скорость операций с ними. Недостатком является, обычно, довольно узкий диапазон представляемых значений, тем более узкий чем больше необходимая точность. Применяются, чаще всего, для представления денежных сумм, временных периодов и т.д.

  • с плавающей точкой, можно представить число в виде "двух" разных целых: мантисы и порядка. Это и есть те самые типы float и double :) Такие числа имеют более стабильную относительную точность, но не абсолютную. Большим достоинством таких чисел, является очень широкий диапазон представляемых значений.

Если же вам надо, более подробно, диапозоны значений, конкретный способ представления, количество необходимых бит и т.д. , то нужно копаться в спецификациях компилятора, а возможно и процессора.

▲ 0

Относится к value types. Также считается Floating-point numeric types:

float   ±1.5 x 10−45 to ±3.4 x 1038 ~6-9 цифр   4 bytes
double  ±5.0 × 10−324 to ±1.7 × 10308   ~15-17 цифр 8 bytes