Пропустить к содержанию
Руководство Varlig
Главная страница Varlig

Результаты: отображение и точность

Здесь объясняется отображение результата рядом со строкой: десятичные знаки, сокращение больших чисел, округление денег, форматы значений и точность внутренних чисел. Читайте по порядку или переходите к нужной таблице. Ограничения одного вычисления перечислены ближе к концу.

Хранимые значения и отображаемые ответы

Каждая строка обрабатывается в два этапа. Сначала выполняется вычисление с сохранением полного значения. Затем результат форматируется для чтения, иногда с округлением. Такое округление меняет только отображение.

Следующая строка, использующая имя, получает полное значение, а не округлённые цифры:

calc
share = 250 / 3 даёт 83.3333333333
share * 3 даёт 250

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

Знаки после запятой

Результаты показывают до десяти десятичных знаков с округлением последнего. Конечные нули опускаются: 0.75, а не 0.7500000000.

calc
2 / 3 даёт 0.6666666667
1 / 8 даёт 0.125

Исключение — значащие цифры: требуемый конечный ноль сохраняется, чтобы не занизить заявленную точность. Поэтому 31.0357 m to 3 sf даёт 31.0 m, а 31.0357 m to 1 dp — 31 m.

Переводы через плотность ингредиента показывают до девяти значащих цифр — точность самой плотности. Например, 1 cup milk in g выводит 242.739531 g. Для основных продуктов выпечки хранятся веса чашки: 1 cup flour in g даёт ровно 125 g. Внутреннее значение сохраняет все цифры.

Число десятичных знаков по умолчанию меняется в настройках вычислений в пределах 0–15. Для отдельной строки используйте формат результата в её контекстном меню. Оба способа меняют только отображение.

Чтобы округлить само значение, напишите to 2 dp. Следующие строки получат округлённый результат. Половины округляются от нуля: 2.345 to 2 dp равно 2.35, а round(-2.5) — -3.

calc
exact = 2 / 3 даёт 0.6666666667
approx = 2 / 3 to 2 dp даёт 0.67
exact * 3 даёт 2
approx * 3 даёт 2.01

Другие способы описаны в разделе Округление.

Денежные суммы

Деньги следуют правилам валюты, а не общему пределу в десять знаков:

  • Точность валюты. Обычно два знака; у иены — ни одного, у кувейтского динара — три. Полный список — в справочнике валют.
  • Конечные нули сохраняются. $15 выводится как $15.00.
  • Малые положительные суммы сохраняют цифры. Значение меньше цента, например $0.004, не превращается в $0.00.
  • Цены за единицу сохраняют до четырёх десятичных знаков исходной записи: £0.075/kWh и £1.499/L показываются полностью. То же для пенсов и центов: 6.2p выводится как £0.062, а 24.5p/kWh — как £0.245/kWh. Итоговая стоимость округляется до пенса: 148.9p/L * 45 L равно £67.01. При большем числе знаков цена меньше £1 выводится с четырьмя значащими цифрами (£0.12345/kWh как £0.1235/kWh), а другие цены, например £8/kg / 3, — до пенса.
  • Криптовалюты показывают до десяти десятичных знаков, как числа без единиц.

Присваивание суммы имени отображается как обычная денежная строка. Имя сохраняет полное значение, поэтому последующие вычисления не теряют точность из-за отображения.

calc
£250 / 3 даёт £83.33
bill = £250 / 3 даёт £83.33
bill * 3 даёт £250.00
¥1,250 / 4 даёт ¥313
£0.075/kWh даёт £0.075/kWh
£8/kg / 3 даёт £2.67/kg

В настройках валют можно выключить округление до точности валюты, показывать коды вместо символов (15.00 USD вместо $15.00) или убирать конечные нули ($15 вместо $15.00).

Большие и малые числа

Начиная со 100 000 числа без единиц сокращаются: k — тысячи, M — миллионы, G — миллиарды, T — триллионы, P — квадриллионы. Очень большие и очень малые числа переходят в научную запись.

Деньги меньше миллиона показываются полностью до мелкой денежной единицы: £199,999.98 остаётся £199,999.98. От миллиона суммы тоже сокращаются, но миллиарды обозначаются B, а не G, и выводится до трёх десятичных знаков.

Величина Число без единиц Денежная сумма
меньше 100 000 99,999 $99,999.99
от 100 000 250k, 123.456k $150,000.00
от 1 000 000 1.5M, 1.234567M $2.5M
от 10⁹ 8.1G, 1.23456789G $1.235B
от 10¹² 2T $2T
от 10¹⁵ 100P $100P
больше 10¹⁷ 1e18, 6.02e23 $1e18
меньше 0,000001, но не ноль 1e-7, 5e-11
calc
250000 даёт 250k
£99,999.99 * 2 даёт £199,999.98
$1234567.89 даёт $1.235M
8,100,000,000 даёт 8.1G
$1,234,567,890 даёт $1.235B
0.0000001 даёт 1e-7

Буква меняет только отображение. 1.5 million хранится как 1 500 000 и выводится 1.5M; 3bn выводится 3G. Ниже 100 000 используются разделители тысяч (99,999).

Число с единицей записывается полностью, чтобы буква не выглядела приставкой: 175,200 Wh иначе можно было бы принять за киловатт-часы. Научная запись включается только выше 10¹⁷ или ниже 0,000001.

calc
175200 Wh даёт 175,200 Wh
1 light year in km даёт 9,460,730,472,580.8 km

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

Виды ответов

У каждого типа значения свой формат. В таблице приведено по одному-два примера.

Вид Что вы пишете Ответ
Число 1,000 + 10 1,010
Денежная сумма $100 + 15%, 50 CHF $115.00, CHF 50.00
Величина 65 kg in lb, 12 kg / 4 m² 143.3004704202 lb, 3 kg/m²
Величина в двух единицах 180 cm in feet and inches 5 feet 10.87 inches
Число пикселей 420 mm in px at 300 dpi 4,961 px
Диапазон 2-3 kg, 5-10% of £200 2 - 3 kg, £10.00 - £20.00
Процент 15 / 60 as % 25%
Множитель £60 / £40 as x 1.5x
Дробь 0.75 as fraction, 22/7 as fraction ¾, 3 1/7
Научная запись 12345.6789 in sci 1.23456789e4
Шестнадцатеричная, двоичная, восьмеричная запись 255 in hex, 255 in binary, 255 in octal 0xFF, 0b11111111, 0o377
Истина или ложь £45 > £40 true
Дата March 12 2024 + 3 days March 15, 2024
Время суток 12:30 PM, 1:00:30 12:30 PM, 01:00:30
Длительность 9:30 to noon, 30 min - 2 hours 2 hours 30 min, -(1 hour 30 min)
Диапазон дат Q1 2025 Jan 1 – Mar 31, 2025
Таймкод 48 frames @ 24 fps 00:00:02:00
Время круга 1:23:45.67 01:23:45.67
Темп 5 km in 26:45 05:21/km
Градусы, минуты, секунды 45.5 degrees as DMS 45° 30′ 0″
Часы, минуты, секунды 1.5 hours as HMS 1h 30m 0s
Высота музыкального тона 440 Hz to pitch A4
Список [1, 2+3, 4*2] [1, 5, 8]
Матрица identity(2) [[1, 0], [0, 1]]
Комплексное число 3 * (2 + 3i), conj(-1 + i) 6 + 9i, -1 - i
Текст weekday on March 12 2024, differentiate(x^3, x) Tuesday, (3*(x^(3-1)))

У некоторых единиц есть особенности. Чашки и пинты используют множественное число: 2.5 cups, 2 pints. В двухкомпонентном результате меньшая часть выводится с двумя знаками, например 5 feet 10.87 inches, но длительности и стоуны с фунтами округляются до целой меньшей единицы. Пиксели выводятся с разделителями тысяч и пробелом перед px.

calc
500 g sugar in cups даёт 2.5 cups
82 kg in stones and pounds даёт 12 st 13 lb
89.9 min in hours and minutes даёт 1 hour 30 min
6000 px * 4000 px даёт 24,000,000 px

Некоторые форматы зависят от сегодняшней даты. Для текущего года год опускается, а близкие даты могут выводиться относительным словом:

calcРезультаты зависят от сегодняшней даты или актуальных данных
March 12 даёт March 12
tomorrow at 1am даёт Tomorrow at 1:00 AM

Ещё два состояния результата:

  • Нет ни результата, ни ошибки — строке нечего показать: это комментарий, пустая строка, определение функции или незавершённая запись вроде total =.
  • pending… означает ожидание ещё недоступных данных.

Точность ответов

Точная арифметика

Целые числа, десятичные и обыкновенные дроби хранятся точно. Сложение, вычитание, умножение, деление и целые степени сохраняют точность, включая дроби вроде ⅓ без конечной десятичной записи. Оператор == сравнивает точные значения без округления.

calc
0.1 + 0.2 == 0.3 даёт true
1/3 + 1/3 + 1/3 == 1 даёт true

Квадратный корень точен, если допускает точное представление; иначе сохраняется 38 значащих цифр с отсечением, не округлением. Стандартное отклонение использует тот же корень. Функции gcd и lcm точны, неотрицательны и работают с дробями без предварительного округления.

calc
sqrt(2.25) даёт 1.5
sqrt(1e-64) даёт 1e-32
gcd(12, 18) даёт 6

Приближённые результаты

Некоторые операции используют двоичные числа с плавающей точкой и ограниченной точностью:

  • тригонометрия, логарифмы и экспоненты
  • нецелые степени вроде 2^0.5 и научная запись с дробным показателем, например 1e2.5
  • некоторые переводы единиц
  • численное решение уравнений, производные и интегралы
  • матричные разложения и собственные значения
  • функции комплексных чисел за пределами простой арифметики

Поскольку == сравнивает точные значения, два приближённых результата могут выглядеть одинаково, но различаться. Сравнивайте их разность с небольшим допуском:

calc
sqrt(2)^2 даёт 2
sqrt(2)^2 == 2 даёт false
abs(sqrt(2)^2 - 2) < 0.000000001 даёт true

Выбирайте допуск с учётом масштаба чисел. Десять отображаемых знаков не гарантируют десять верных знаков, особенно в сложных численных задачах.

В списках, матрицах и комплексных числах часть на уровне погрешности округления, намного меньшая соседних значений, выводится как 0. Так результаты разложения матрицы или exp(i * pi) остаются читаемыми. Внутреннее значение сохраняет цифры, поэтому при сравнении тоже нужен допуск:

calc
exp(i * pi) даёт -1
abs(exp(i * pi) + 1) < 0.000000001 даёт true

Размер чисел

  • Десятичные числа хранятся как целое до 2¹²⁸−1 (около 38 цифр), умноженное на степень десяти от 10⁻¹²⁸ до 10¹²⁷. Значения больше 1e127 тоже работают, пока цифры помещаются в представление.
  • Дроби допускают числитель и знаменатель до 4 096 бит каждый.
  • При сложении очень малого с огромным малая часть может потеряться: 1e30 + 0.001 показывает 1e30.
  • Выход за диапазон при умножении или возведении в степень даёт Error: ∞, если результат слишком велик или слишком мал. Переполнение не превращает его в произвольное неверное число.
calc
1e30 + 0.001 даёт 1e30
1e100 * 1e100 даёт Error: ∞

Ограничения

Каждая строка должна укладываться в ограничения. При превышении обычно появляется Error: calculation limit только в этой строке; остальная заметка работает. Частичный или незавершённый результат не показывается как ответ. Уменьшите диапазон, матрицу, вложенность или размер задачи.

Параметр Ограничение
Одна строка 64 КиБ текста либо 4 096 чисел, слов и символов
Список или range 1 024 элемента
Матрица От 1 до 32 строк и столбцов; все строки одинаковой длины
Вложенные списки и вызовы встроенных функций 16 уровней
sum или product по диапазону 10 000 членов
Расширенные вычисления 100 000 шагов; вложенные операции используют общий лимит и поэтому исчерпывают его быстрее
Собственные функции 32 параметра; глубина вызовов функций — до 16, всего до 16 384 вызовов и строк тела функций
Дроби 4 096 бит в числителе или знаменателе
Символьная производная 8 192 символа результата
solve 128 итераций
integrate 2 048 уточнений, 20 уровней разбиения

Varlig Calc пока не поддерживает общую символьную алгебру, неопределённые интегралы, нелинейные системы, исторические цены криптовалют, запись бросков костей вроде 2d6, арифметику с неопределённостями вроде 10 ± 0.5 и цепочки сравнений вроде 1 < x < 5. Подробнее — Расширенная математика.

Всё вместе

Вот бюджет поездки, иллюстрирующий большинство правил этой страницы:

calc
flights = £1,284.60 даёт £1,284.60
hotel = £96.50 * 4 даёт £386.00
total = flights + hotel даёт £1,670.60
each = total / 3 даёт £556.87
each * 3 даёт £1,670.60
each / total as % даёт 33.3333333333%
each / total as fraction даёт ⅓
total to 0 dp даёт £1,671.00
total * 1000 даёт £1.671M
  • Строка each = total / 3 показывает долю с округлением до пенсов, но имя хранит полное значение.
  • Выражение each * 3 использует полное значение и возвращает ровно £1 670,60, а не £1 670,61.
  • Процент — не деньги, поэтому показывается десять десятичных знаков. В виде дроби он точен.
  • Форма to 0 dp округляет само значение; конечные нули сохраняются, потому что результат денежный.
  • Умножение на 1 000 превышает миллион, поэтому результат сокращается до £1.671M.