Когда 1.15 конвертируется в формат IEEE-754 binary64, результат в шестнадцатеричном виде равен 0x1.2666666666666. (1.15 - это 23/20, и он имеет повторяющийся шаблон в шестнадцатеричном формате по той же причине, что 2/3 имеет повторяющийся шаблон в десятичном формате.) Обратите внимание, что это число имеет 53 бита в своем значении, включая последний 0 бит - из ведя 1 к младшему биту из последних 6, получается 53 бита.
Это значение немного ниже 1,15; это 1,149999999999999911182158029987476766109466552734375. Когда мы умножим это на степени 10, результаты с действительными числами будут 11,4999 ..., 114,999 ... и так далее. Единственный способ получить результат, в котором значащие цифры равны 115, заключается в том, что умножение округляется при округлении произведения до формата с плавающей запятой.
Обратите внимание, что в 0x1.2666666666666 есть шаблон, который повторяется каждые четыре бита. Итак, если бы мы округлили это до последнего бита, затем со второго до последнего бита, затем с третьего до последнего и т. Д., Мы увидели бы схему, повторяющуюся каждые четыре члена.
Однако, мы умножаем на 10, 100, 1000 и так далее. Учтите, что log 2 10 составляет около 3.322, чуть меньше 3⅓. (Эквивалентно, 10 3 = 1000 близко к 2 10 = 1024.) Так что, где силы 10 l ie относительно степеней 2 имеют шаблон, повторяющийся каждые три члена до складываются дроби:
- 2 3 ≤ 10 1 <2 <sup>4 .
- 2 6 ≤ 10 2 <2 <sup>7 , на 3 больше, чем предыдущий.
- 2 9 ≤ 10 3 <2 <sup>10 , на 3 больше, чем предыдущий.
- 2 13 ≤ 10 4 <2 <sup>14 , 4 больше, чем предыдущий.
- 2 16 ≤ 10 5 <2 <sup>17 , на 3 больше, чем предыдущий.
- 2 19 ≤ 10 6 <2 <sup>20 , на 3 больше, чем предыдущие.
- 2 23 ≤ 10 7 <2 <sup>24 , на 4 больше, чем предыдущие.
- 2 26 ≤ 10 8 <2 <sup>27, На 3 больше, чем предыдущий.
- 2 29 ≤ 10 9 <2 <sup>30 , на 3 больше, чем предыдущий.
- 2 33 ≤ 10 10 <2 <sup>34 , на 4 больше, чем предыдущие.
Таким образом, до тех пор, пока проблема аппроксимации не нарушит эту модель, полномочия десяти образуют « каждый четвертый ”битовый паттерн с циклом из трех степеней по десять.
(здесь я опустил некоторые детали - на самом деле важны степени пяти, поскольку они влияют на значащие цифры результатов, и это это те важные цифры, которые должны быть округлены, а не числа десяти. Но это не математическое доказательство, и не может быть, потому что образец не продолжается долго; это просто совпадение в небольшом регионе, поэтому это объяснение просто предназначено для интуитивного объяснения совпадения.)
Итак, мы видим, что в цикле из трех слагаемых два из них округляются вверх и производят значащие цифры в 115, и одна из них округляется и выдает 114,999 .... Это просто совпадение, а не глубокая математическая истина.