Какой диапазон чисел может быть представлен в 16-, 32-и 64-разрядных системах IEEE 754?

сделайте элемент inline-block, затем отцентрируйте текст внутри:

h1 {
  display: inline-block;
  text-align: center
}
<h1>Welcome to the best blog website!<br/> New blog is out!</h1>

Если вы хотите чтобы сохранить поведение на уровне блоков, вы можете добавить дополнительный div:

h1 {
  display: inline-block;
  text-align: center
}
<div>
  <h1>Welcome to the best blog website!<br/> New blog is out!</h1>
</div>
<p>some text</p>

или использовать display:table [1118 ]

h1 {
  display: table;
  text-align: center
}
<h1>Welcome to the best blog website!<br/> New blog is out!</h1>
<p>some text</p>

71
задан nbro 11 September 2016 в 13:34
поделиться

7 ответов

Для данного IEEE-754 числа с плавающей запятой X , если

2^E <= abs(X) < 2^(E+1)

, то расстояние от X до следующее по величине представимое число с плавающей запятой ( эпсилон ):

epsilon = 2^(E-52)    % For a 64-bit float (double precision)
epsilon = 2^(E-23)    % For a 32-bit float (single precision)
epsilon = 2^(E-10)    % For a 16-bit float (half precision)

Приведенные выше уравнения позволяют нам вычислить следующее:

  • Для половинной точности ...

    Если вы требуется точность +/- 0,5 (или 2 ^ -1), максимальный размер, который может быть, равен 2 ^ 10. Любое значение больше, чем это, и расстояние между числами с плавающей запятой больше 0,5.

    Если вам нужна точность +/- 0,0005 (примерно 2 ^ -11), максимальный размер, который может быть равен 1. Любое большее чем это, а расстояние между числами с плавающей запятой больше 0,0005.

  • Для одинарной точности ...

    Если вам нужна точность +/- 0,5 (или 2 ^ -1), Максимальный размер числа - 2 ^ 23. Любое значение больше, чем это, и расстояние между числами с плавающей запятой больше 0,5.

    Если вам нужна точность +/- 0,0005 (примерно 2 ^ -11), максимальный размер, который может быть равен 2 ^ 13. Любое значение больше, чем это, и расстояние между числами с плавающей запятой больше 0,0005.

  • Для двойной точности ...

    Если вам нужна точность +/- 0,5 (или 2 ^ -1 ), максимальный размер, который может быть равен 2 ^ 52. Любое значение больше, чем это, и расстояние между числами с плавающей запятой больше 0,5.

    Если вам нужна точность +/- 0,0005 (около 2 ^ -11), максимальный размер, который может быть равен 2 ^ 42. Любое значение больше, чем это, и расстояние между числами с плавающей запятой больше 0,0005.

94
ответ дан 24 November 2019 в 13:00
поделиться

If I understand your question correctly, it depends on your language.
For C#, check out the MSDN ref. Float has a 7 digit precision and double 15-16 digit precision.

0
ответ дан 24 November 2019 в 13:00
поделиться

Для целых чисел с плавающей запятой (я дам свой ответ в терминах двойной точности IEEE) каждое целое число от 1 до 2 ^ 53 точно представимо. За пределами 2 ^ 53 целые числа, которые можно точно представить, разделяются возрастающей степенью двойки. Например:

  • Каждое второе целое число от 2 ^ 53 + 2 до 2 ^ 54 может быть представлено точно.
  • Каждое четвертое целое число между 2 ^ 54 + 4 и 2 ^ 55 может быть представлено точно.
  • Каждое восьмое число целое число от 2 ^ 55 + 8 до 2 ^ 56 может быть представлено точно.
  • Каждое 16-е целое число от 2 ^ 56 + 16 до 2 ^ 57 может быть представлено точно.
  • Каждое 32-е целое число от 2 ^ 57 + 32 до 2 ^ 58 может быть представлено точно.
  • Каждое 64-е целое число от 2 ^ 58 + 64 до 2 ^ 59 может быть представлено точно.
  • Каждое 128-е целое число от 2 ^ 59 + 128 до 2 ^ 60 может быть представлено точно. , , .

Целые числа, которые нельзя точно представить, округляются до ближайшего представимого целого, поэтому в худшем случае округление составляет 1/2 интервала между представимыми целыми числами.

21
ответ дан 24 November 2019 в 13:00
поделиться

Точность, указанная в ссылке Питера Р. на ссылку MSDN, вероятно, является хорошим практическим правилом, но, конечно, реальность более сложна.

Тот факт, что «точка» в «плавающей запятой» является двоичной точкой, а не десятичной точкой, имеет способ победить нашу интуицию. Классическим примером является 0,1, для которого требуется точность в одну цифру в десятичной системе счисления, но его невозможно представить точно в двоичном формате.

Если вам нужно убить выходные, посмотрите Что должен делать каждый компьютерный ученый. Знайте об арифметике с плавающей точкой . Возможно, вас особенно заинтересуют разделы Точность и Преобразование двоичного числа в десятичное .

18
ответ дан 24 November 2019 в 13:00
поделиться

Во-первых, ни IEEE-754-2008, ни -1985 не имеют 16-битных чисел с плавающей запятой; но это предлагаемое дополнение с 5-битной экспонентой и 10-битной дробью. IEE-754 использует специальный знаковый бит, поэтому положительный и отрицательный диапазон одинаков. Кроме того, перед дробью подразумевается 1, поэтому вы получаете дополнительный бит.

Если вам нужна точность до единиц, например, вы можете представить каждое целое число, ответ довольно прост: показатель степени смещает десятичную точку в правый конец дроби. Итак, 10-битная дробь дает вам ± 2 11 .

Если вам нужен один бит после десятичной точки, вы отказываетесь от одного бита перед ним, так что у вас есть ± 2 10 .

Одинарная точность имеет 23-битную дробь, поэтому у вас будет ± 2 24 целых чисел.

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

  • 2 10 = 1,024
  • 2 11 = 2048
  • 2 23 = 8,388,608
  • 2 24 = 16,777,216
  • 2 53 = 9,007,199,254,740,992 (двойное- точность)
  • 2 113 = 10,384,593,717,069,655,257,060,992,658,440,192 (четырехкратная точность)

См. также

4
ответ дан 24 November 2019 в 13:00
поделиться

См. IEEE 754-1985 :

v = (-1)^sign * s^(exponent-exponent_bias) * (1 + fraction)

Примечание (1 + дробь). Как указывает @bendin , используя двоичную плавающую точку, вы не можете выражать простые десятичные значения, такие как 0,1. Подразумевается, что вы можете ввести ошибки округления, многократно выполняя простые добавления или вызывая такие вещи, как усечение. Если вас вообще интересует какая-либо точность, единственный способ добиться ее - использовать десятичную дробь с фиксированной точкой, которая в основном представляет собой масштабированное целое число.

2
ответ дан 24 November 2019 в 13:00
поделиться

Мне потребовалось немало времени, чтобы понять, что при использовании двойников в Java я не теряю значительной точности в вычислениях. плавающая точка на самом деле имеет очень хорошую способность представлять числа с вполне разумной точностью. Точность, которую я терял, была сразу после преобразования десятичных чисел, набранных пользователями, в двоичное представление с плавающей запятой , которое изначально поддерживается. Недавно я начал преобразовывать все свои числа в BigDecimal. BigDecimal требует гораздо большей работы в коде, чем float или double, поскольку это не один из примитивных типов. Но с другой стороны, я смогу точно представить числа, которые вводят пользователи.

0
ответ дан 24 November 2019 в 13:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: