Точность штатного калькулятора iOS

Идущий в составе iOS калькулятор выполняет операции в четверной точности (quad float, мантисса 112 бит, от 33 до 36 десятичных цифр), затем округляет результат по эстетическим соображениям. Например, количество отображаемых значащих цифр отличается в вертикальном режиме, горизонтальном режиме и при копировании в буфер обмена.

Калькулятор iOS
Калькулятор iOS

Можно в этом убедиться на примере дроби 1/9801, десятичное представление которой очень удобно для подобных экспериментов. Тут калькулятор iOS показывает 18 знаков после запятой.

Тоже калькулятор iOS
Тоже калькулятор iOS

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

И это калькулятор iOS
И это калькулятор iOS

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

Как это сделано в Андроиде

Калькулятор Android
Калькулятор Android

Встроенный в Android калькулятор работает в конструктивных вещественных числах (Constructive Reals). Результат можно промотать влево, получив столько значащих цифр, сколько хочется. Они считаются на ходу. В коде конструктивные вещественные числа представлены не данными, а функциями, которые возвращают нужные значащие цифры по запросу.

Слева калькулятор Android до промотки, справа - после. Видно, что значащие цифры продолжают поступать по мере необходимости.

Теперь так можно и на iOS

Несмотря на то, что Hans Boehm давно опубликовал исходный код библиотеки работы с конструктивными вещественными числами com.hp.creal, мне не удалось найти готовый порт AOSP ExactCalculator на iOS. Пришлось сделать, благо нонче это дело нехитрое.

Constructive Calculator
Constructive Calculator

Попробуйте.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Какая двенадцатая цифра после запятой в exp(π√163)? Первые одиннадцать цифр после запятой — девятки. Спрашивать у ChatGPT неспортивно
44.44%94
33.33%0-83
22.22%Вопрос неверно сформулирован2
Проголосовали 9 пользователей. Воздержались 5 пользователей.