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

Единицы и количества

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

Единицы превращают Numlex в калькулятор, понимающий размерности: 5 m — это метры, а 5m — пять миллионов; 1 km + 500 m — это 1.5 km, а 10 km in 45 min — темп. Здесь всё строго: фразовые шаблоны либо полностью забирают строку, либо строка в них не попадает.

Эта страница описывает синтаксис количеств, выражения над единицами и их исключения, чувствительность к регистру, приставки СИ, таблицу арифметики количеств, все строгие фразовые шаблоны, таблицу кулинарных плотностей и то, как пользовательские единицы расширяют каталог.

Пробел важен

Количество — это <number> <unit>, пробел обязателен:

  • 5 m — пять метров.
  • 5m — пять миллионов (скаляр; см. компактные суффиксы).
  • 2 Gb — два гигабита; 2 Gbyte — два гигабайта.

Приклеенная буква — не единица.

Выражения над единицами

Единицы комбинируются через *, · и /, а степени задаются ^, ² или ³ (основание степени — буква, например m², m³):

km/h      kg/m³      N·m      m/s²

Ограничения:

  • Композиция только линейная: степени не могут произвольно создавать новые размерности — составные формы ограничены ^2, ^3 и дробями или произведениями атомов каталога.
  • Температуры, валюты и топливные единицы — особые: они участвуют только самостоятельно и никогда не входят в составные выражения (C°/h — ошибка).
  • Конвертация to|in|as <unit>: справа — целевая единица, слева — количество, а сигнатуры размерностей должны совпадать — 10 km in m = 10 000 m, тогда как 10 km in kg — ошибка.
  • Температуры конвертируются по аффинным формулам, а не по коэффициенту: 100 C° to F° = 212 F°.
  • Топливные единицы — семейство L/100km / L/km и обратные (в стиле км/л) формы.

Чувствительность к регистру

Алиасы ввода сохраняют регистр:

  • MB (мегабайты) и Mb (мегабиты) — разные единицы.
  • mb — ни то ни другое: после case-fold это неоднозначно, поэтому такая единица просто неизвестна.
  • Метка единицы тоже принимается как ввод: 10 meters = 10 m.

Приставки СИ

Допустимые глифы-приставки: p n µ m c d k K M G T P — от 10⁻¹² (пико) до 10¹⁵ (пета). Каждый атом каталога объявляет, какие приставки принимает (приложение перечисляет их в колонке SI prefixes, и каталог единиц воспроизводит эту колонку). Обратите внимание: µ — греческая мю (U+00B5 или U+03BC), а не латинская u.

Сгенерированные — то есть отдельно не перечисляемые — формы:

  • множественное число атомов (meters = meter),
  • формы с приставками (km, mm, kWh …), построенные по правилу приставка из списка атома + атом.

Сочетания, которых каталог не объявляет, приставками не являются: буква просто вычёркивается как неизвестное слово, и число возвращается без единицы — 3 Pm → 3, 100 um → 100.

Арифметика количеств

Строки количеств используют строгий язык: количества, обычные числа, именованные значения, операторы + - * / ^ × ÷ of ( ) и суффикс to|in|as <unit>. Строка либо целиком принадлежит этому языку — shape hit, при котором ошибки видимы, — либо язык вообще её не забирает (строка переходит к деньгам, датам или прозе).

ОперацияПравилоПример
+ −одинаковая размерность; «простая» сторона принимает единицу другой стороны300 + 20 km = 320 km; 1 km + 500 m = 1.5 km
× /композиция размерностей; валюты и температуры отвергаются90 km / 3 day = 30 km/day
^степень (с учётом ограничений составных форм)10 m × 2 m = 20 m²
Отображениерезультат показывается в более грубой единице операндов (с большим базовым коэффициентом); при равенстве — в левой1 km + 500 m → km

Именованные количества и токены работают естественно: объявите distance = 10 km и позже спросите distance in m. Температуры, валюты и топливо остаются самостоятельными — они никогда не участвуют в составных выражениях.

Строгие фразовые шаблоны

ШаблонПримерСмысл
<qtyA> in <qtyB>10 km in 45 minскорость / темп / ставка: A ÷ B → 0.2222 km/min
45 min in 10 kmтемп → 4.5 min/km
1 Gbit in 5 sскорость передачи → 0.2 Gbit/s
<qty> at <money> per <unit>2.5 kg at €3 per kgцена: qty/unit × цена → €7.50
per <unit> (внутри алгебры)90 km per 3 day30 km/day (оператор смешанной ступени)
PPI (в обе стороны)10 in in px at 96 ppi960 px; 960 px at 96 ppi to in = 10 in (1 in = 0.0254 м точно)
Кулинарные плотности200 g of flour to mlмасса → объём через таблицу кулинарных плотностей (≈)
1 cup of honey to gобъём → масса (≈)
1 L of oil as kgцели противоположного вида работают с in / as / to

Каждый фразовый шаблон забирает совпавшую строку: ошибка видима и никогда не превращается в «откат с вычёркиванием слов».

Кулинарные плотности

Приблизительные плотности упаковки, воспроизводящие стандартные таблицы US-baking cup. Будущая перекалибровка станет видимым изменением. Ввод — нижний регистр, пробелы и дефисы игнорируются (brown sugar = brown-sugar = brownsugar).

ВводМеткакг/м³Примечание
waterwater10001 cup ≈ 237 g
flourall-purpose flour528.31 cup ≈ 125 g (spooned, leveled)
sugargranulated sugar845.41 cup ≈ 200 g
brownsugarbrown sugar (packed)930.31 cup ≈ 220 g
icingsugarpowdered sugar507.21 cup ≈ 120 g
salttable salt1153.91 cup ≈ 273 g
butterbutter959.41 cup ≈ 227 g
honeyhoney1437.11 cup ≈ 340 g
milkwhole milk1031.31 cup ≈ 244 g
oilvegetable oil921.41 cup ≈ 218 g
ricewhite rice (dry)782.01 cup ≈ 185 g uncooked
cornstarchcornstarch541.01 cup ≈ 128 g
oatsrolled oats (dry)338.21 cup ≈ 80 g
cocoacocoa powder (sifted)359.31 cup ≈ 85 g
chocolatechocolate chips718.51 cup ≈ 170 g
peanutbutterpeanut butter1090.51 cup ≈ 258 g
creamcheesecream cheese976.41 cup ≈ 231 g
yogurtplain yogurt1035.61 cup ≈ 245 g
applesauceapplesauce1031.31 cup ≈ 244 g
cornmealcornmeal613.11 cup ≈ 145 g
yeastdry yeast4501 cup ≈ 107 g (very light)

Пользовательские единицы

Пользовательские единицы задаются в Settings → Units и расширяют каталог за пределы 237 встроенных записей:

  • Имя: 1–6 ASCII-слов, ≤ 40 символов, первое слово начинается с буквы; имя должно быть уникальным (коллизия с каталогом или другой пользовательской единицей отклоняется).
  • Определение: либо <number> <existing unit expression> (например 2.54 cm), либо литерал new unit, объявляющий новый независимый атом.
  • Зависимости разрешаются в порядке объявления и вне его; цикл — ошибка. Глобальный лимит — 100 пользовательских единиц.
  • Пользовательские единицы действуют на уровне приложения (настройки приложения) и не сохраняются в листе .nlx.
  • Множественное число имени принимается автоматически, как у атомов каталога.

Полная грамматика и система констант — в пользовательских единицах и константах.

Примеры

10 km to m                → 10 000 m
300 + 20 km               → 320 km
90 km / 3 day             → 30 km/day
10 km in 45 min           → 0.2222 km/min
45 min in 10 km           → 4.5 min/km
1 Gbit in 5 s             → 0.2 Gbit/s
2.5 kg at €3 per kg       → €7.50
90 km per 3 day           → 30 km/day
10 in in px at 96 ppi     → 960 px
200 g of flour to ml      → 378.6 ml (≈)
1 cup of honey to g       → 340 g (≈)

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

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