Numlex Документация
Справочник синтаксиса
Сообщить о проблеме

Проценты

Процентные литералы, аддитивный и мультипликативный контексты и все строгие фразовые шаблоны — включая обратные формы и «what %».

Проценты в Numlex — не просто значения: контекст меняет их смысл. 10% — это 0.1, но в аддитивном контексте 100 + 10% означает десять процентов от накопленной левой части, и результат сохраняет процентный вид при отображении.

Эта страница описывает процентные литералы, строгую фразовую грамматику (of, on, off, обратные формы what, дроби и множители), правило затенения ключевых слов и ограничения операндов, превращающие смешанные валюты и нулевые базы в видимые ошибки.

Процентные литералы

Процентный литерал — p% = p/100. Его смысл зависит от контекста:

  • Аддитивный контекст — «чистый» процент справа — доля от накопленной левой части: 100 + 10% = 110, 110 − 5% = 104.5.
  • Любой другой контекст — обычный скаляр: 200 × 10% = 20, 200 / 10% = 2000.

Результаты сохраняют свой вид при отображении: результат процентного вида показывается как 30%, а не 0.3, множитель — как 1.5x, дробь — как 1/2.

Затенение ключевых слов

Фразовая грамматика использует ключевые слова of on off is what as a to percent percentage fraction multiple multiplier x. Они не зависят от регистра.

Активная переменная или константа с именем ключевого слова отключает все формы, которые его используют. Например, объявление of = 5 выключает все формы с of на листе — слово становится вашим значением.

Фразовые шаблоны

ШаблонПримерРезультатПравило
<p>% of <v>15% of 49073.5процент × значение; базис — остаток строки (15% of 490 + 5 = 74.25, 50% of (10 + 5) = 7.5); денежное значение базиса допустимо
<p>% on <v>15% on 200230v × (1 + p)
<p>% off <v>30% off 200140v × (1 − p)
<v> is <p>% of what100 is 50% of what200v ÷ p (обратный базис)
<v> is <p>% off what100 is 20% off what125v ÷ (1 − p)
<v> is <p>% on what100 is 25% on what80v ÷ (1 + p)
<a> is what % of <b>50 is what % of 20025%a ÷ b как процент
<a> is what % off <b>140 is what % off 20030%(b − a) ÷ b
<a> is what % on <b>230 is what % on 20015%(a − b) ÷ b
<a> as a % of <b>100 as a % of 80012.5%a ÷ b как процент
<a> to <b> is what %100 to 130 is what %30%(b − a) ÷ a
<a> to <b> as %100 to 130 as %30%(b − a) ÷ a
<m>x of/on/off <v>1.5x of 20, 1.5x on 20, 1.5x off 2030 / 50 / −10множитель: of = v·m; on = v·(1+m); off = v·(1−m) — ровно как у процентов (100% off = 0)
<a>/<b> % (пробел перед %)20/200 %10%превращает предшествующее деление в процент; 20/200% (без пробела) — legacy-постфикс, даёт 10
<p>% as fraction50% as fraction1/2сокращённая рациональная дробь
<a>/<b> as fraction2/10 as fraction1/5сокращённая рациональная дробь
<d> as %0.25 as %25%десятичная → процент
<a> as x of <b>20 as x of 54xотношение как множитель
<a> to <b> as x10 to 15 as x1.5xотношение как множитель
20% is 500, what is 75017.5%трёхзначная форма: B × L ÷ A
if 500 is 20%, what is 75030%трёхзначная форма: A × C ÷ B

Правила операндов

Операнды вычисляются тем же строгим ядром, что и везде, — именованные значения, маркеры валют и денежные имена работают.

  • Деление денег в разных валютах (50 is what % of 200, где значения в разных валютах) — ошибка.
  • Деление на ноль — ошибка.
  • Логические значения и валюты здесь никогда не приводятся к числам.
  • Нулевые базы и бесконечные значения — ошибки.

Связанные разделы

Нашли ошибку в документации? Сообщите о ней на GitHub