Единицы и количества
Выражения над единицами, конвертации, арифметика количеств, строгие фразовые шаблоны, кулинарные плотности и пользовательские единицы.
Единицы превращают 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 day | 30 km/day (оператор смешанной ступени) |
| PPI (в обе стороны) | 10 in in px at 96 ppi | 960 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).
| Ввод | Метка | кг/м³ | Примечание |
|---|---|---|---|
| water | water | 1000 | 1 cup ≈ 237 g |
| flour | all-purpose flour | 528.3 | 1 cup ≈ 125 g (spooned, leveled) |
| sugar | granulated sugar | 845.4 | 1 cup ≈ 200 g |
| brownsugar | brown sugar (packed) | 930.3 | 1 cup ≈ 220 g |
| icingsugar | powdered sugar | 507.2 | 1 cup ≈ 120 g |
| salt | table salt | 1153.9 | 1 cup ≈ 273 g |
| butter | butter | 959.4 | 1 cup ≈ 227 g |
| honey | honey | 1437.1 | 1 cup ≈ 340 g |
| milk | whole milk | 1031.3 | 1 cup ≈ 244 g |
| oil | vegetable oil | 921.4 | 1 cup ≈ 218 g |
| rice | white rice (dry) | 782.0 | 1 cup ≈ 185 g uncooked |
| cornstarch | cornstarch | 541.0 | 1 cup ≈ 128 g |
| oats | rolled oats (dry) | 338.2 | 1 cup ≈ 80 g |
| cocoa | cocoa powder (sifted) | 359.3 | 1 cup ≈ 85 g |
| chocolate | chocolate chips | 718.5 | 1 cup ≈ 170 g |
| peanutbutter | peanut butter | 1090.5 | 1 cup ≈ 258 g |
| creamcheese | cream cheese | 976.4 | 1 cup ≈ 231 g |
| yogurt | plain yogurt | 1035.6 | 1 cup ≈ 245 g |
| applesauce | applesauce | 1031.3 | 1 cup ≈ 244 g |
| cornmeal | cornmeal | 613.1 | 1 cup ≈ 145 g |
| yeast | dry yeast | 450 | 1 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 (≈)
Связанные разделы
- Каталог единиц — все 237 невалютных единиц с алиасами, приставками и размерностями.
- Пользовательские единицы и константы — настройки единиц.
- Даты и время — длительности, составные временные литералы и нотация
Timespan. - Живые данные и география — расстояния, вычисляемые по поверхности Земли.