Что именно является поплавком? - PullRequest
9 голосов
/ 12 апреля 2011

Да, нубский вопрос века ... Но, если серьезно, я на самом деле понятия не имею, что такое значение с плавающей точкой ... И что более важно, разница между числом с плавающей точкой и целым числом.

Заранее спасибо!

Ответы [ 7 ]

12 голосов
/ 12 апреля 2011

См.

По сути, тип данных с плавающей запятой - это способ хранения числового значения внаучная нотация.Вы могли бы написать 2.3789 x 10 ^ 12, но поскольку компьютеры работают в двоичном формате, это двоичная научная запись.

Значения с плавающей запятой, в программном обеспечении, торгуйте величиной для абсолютной точности (у вас есть только столько битраспространяться).

Целые числа ... ну ... целые числа.Самый правый (младший бит) представляет 2 ^ 0 (например, 1), следующий бит представляет 2 ^ 1 (2 с), следующий 2 ^ 2 (4) и так далее.Крайний левый бит (старший порядок) представляет знак (0 положительно, 1 отрицательно).Что приводит нас к отрицательным значениям: они представлены в так называемой нотации двойного дополнения.Чтобы получить дополнение двух к положительному числу:

  • переверните все биты: нули становятся единицами, а единицы становятся нулями.
  • добавьте 1 к результату, выполняя все обычные переносы.

Таким образом, восьмибитное положительное значение 1 (в двоичном виде, 00000001) преобразуется в отрицательное представление (11111111) на

  1. 00000001 Исходное значение.
  2. 11111110 Отразить его биты
  3. 11111111 Добавить 1

Преимущество двоичной записи в том, что сложение и вычитание используют одну и ту же схему: вычитание осуществляется черездобавление: используя приведенный выше пример + 1 / -1, вы получите ноль: добавьте самые правые биты, получая двоичное число 10 (десятичное 2).Перенесите это в следующий столбец, повторите дополнение.Перенос распространяется через знаковый бит, давая вам окончательное значение 00000000.

Раньше были системы, которые использовали другие представления, но большинство (если не все) современных компьютеров используют нотацию с двумя дополнениями.

Тогда, конечно, есть битовый порядок (big-endian v. Little-endian), но это другая история.

3 голосов
/ 12 апреля 2011

Я хочу подробнее остановиться на том, что Николас Кэри упомянул в своем ответе:

Значения с плавающей запятой в программном обеспечении обменивают величину на абсолютную точность (вам нужно разбросать только столько битов).

Именно поэтому мы называем их «числами с плавающей запятой» - мы разрешаем десятичной запятой «плавать» в зависимости от того, насколько велико число, которое мы хотим записать.

Давайте приведем пример в десятичной записи. Предположим, что вам дано 5 ячеек для записи числа: _ _ _ _ _. Если вы не используете десятичные точки, то можете представлять числа от 0 до 99999. Однако самое маленькое различие, которое вы можете представить, составляет 1.

Теперь вы решили, что вам нужно записать суммы в долларах, поэтому вы добавляете десятичную точку двумя цифрами слева: _ _ _. _ _ Это называется арифметика с фиксированной точкой . Теперь вы можете писать только цифры от 0 до 999,99, но теперь вы можете представлять разницу в один цент или 0,01

Что если вы хотите использовать эту программу как для небольших повседневных расходов, так и для вашего подоходного налога? Вы можете разрешить десятичную точку плавать и представлять ее положение, используя одну из цифр: [_] _ _ _ _

Например, ваш банковский процент может составлять [3] 4 7 6 5, что составляет 4,765, ваш счет за продуктовый магазин может быть [2] 5 9 8 2 (59,82), ваш арендный платеж 1 8 7 5 9 (875,9) и вашей налоговой декларации [0] 2 3 8 9 (2389). Вы можете даже разрешить десятичную точку выходить за пределы цифр следующим образом: [-1] 4 5 9 8 представляет 4598x10 = 45 980.

Обратите внимание, что теперь вы можете представлять как очень маленькие, так и очень большие числа, но вы не можете точно представить все числа. Например, при написании [0] 2389 мы теряем центы.

Более привычно всегда думать о числах с плавающей запятой в научных обозначениях, таких как 4.598x10 ^ 4, где «4.598» называется значимым, «4» - показателем степени, а «10» - основанием. Ссылки, упомянутые другими, содержат более подробную информацию о фактическом формате хранилища.

2 голосов
/ 12 апреля 2011

В этом случае Википедия - ваш лучший друг:

Хотя вам, вероятно, стоит начать только с обзора типов данных

Кроме того, реализации типов данных различаются в зависимости от языка и архитектуры процессора (например, целые числа - это разное число битов в разных архитектурах),но если использовать C в качестве канона (C является де-факто стандартом для системного программирования и считается "чуть выше" ассемблерным языком с точки зрения абстракции), то эти ресурсы должны быть еще более полезными:

0 голосов
/ 12 апреля 2011

float - это тип данных.

http://en.wikipedia.org/wiki/Floating_point

0 голосов
/ 12 апреля 2011

Что должен знать каждый компьютерщик об арифметике с плавающей точкой http://download.oracle.com/docs/cd/E19957-01/806-3568/ncg_goldberg.html

Численные вычисления с использованием арифметики с плавающей точкой IEEE http://www.amazon.com/Numerical-Computing-Floating-Point-Arithmetic/dp/0898714826/ref=wl_it_dp_o?ie=UTF8&coliid=IUNMIY7UE6ZS2&colid=2UDAD4OEO371J

IEEE 754-1985 http://en.wikipedia.org/wiki/IEEE_754-1985

0 голосов
/ 12 апреля 2011

Позвольте мне Google это для вас!

http://en.wikipedia.org/wiki/Primitive_data_type#Floating-point_numbers

Довольно интересное чтение для профи и начинающих! Наслаждайтесь.

0 голосов
/ 12 апреля 2011

В основных терминах:

Значение с плавающей запятой - это действительное число, которое может иметь десятичные точки.

Целочисленное значение не имеет десятичных точек (целое число, если хотите)

...