Возможно, вы знаете, что числа бывают разные: натуральные, целые, рациональные(дроби) и т.д. Наиболее естественны, для "компьютера", целые (и в двоичном представлении :) ), а все другие приходится представлять в виде набора целых. Очень упрощенно, можно сказать, что существует несколько подходов к таком представлению рациональных чисел:
в лоб, хранить два целых числа, числитель и знаменатель. Обычно такой способ не используется, так как имеет такие недостатки, как нестабильная точность (и абсолютная и относительная), а так же неоднозначность представления (и интерпретации) такого числа, например 1/2 и 4/8 - мы должны интерпретировать как одно число или как два разных
с фиксированной точкой, мы используем одно целое число, просто "держа в уме", что часть значимых цифр представляют "дробную часть". Обычно такие типы называются decimal
или money
. Достоинством таких типов является стабильная абсолютная точность и скорость операций с ними. Недостатком является, обычно, довольно узкий диапазон представляемых значений, тем более узкий чем больше необходимая точность. Применяются, чаще всего, для представления денежных сумм, временных периодов и т.д.
с плавающей точкой, можно представить число в виде "двух" разных целых: мантисы и порядка. Это и есть те самые типы float
и double
:) Такие числа имеют более стабильную относительную точность, но не абсолютную. Большим достоинством таких чисел, является очень широкий диапазон представляемых значений.
Если же вам надо, более подробно, диапозоны значений, конкретный способ представления, количество необходимых бит и т.д. , то нужно копаться в спецификациях компилятора, а возможно и процессора.