Выражения на естественном языке
Varlig понимает не только символы, но и ряд повседневных английских выражений. Используйте их, когда словами понятнее: чтобы разделить счёт, посчитать стоимость покупок или взять три четверти количества из рецепта.
На этой странице описаны правила чтения таких выражений: как Varlig разбирает строку, распознаёт числа и дроби прописью и объединяет фразы. Произвольный текст при этом не поддерживается. Полный список приведён в справочнике выражений. Вопросы о процентах разобраны в разделе Проценты, а словесная запись функций, например square root of 16, — в разделе Математика словами.
Как Varlig разбирает фразы
В заметках текст соседствует с формулами, поэтому Varlig разбирает каждую строку вычислений в два этапа:
- Сначала пробует вычислить строку целиком, используя все поддерживаемые выражения. Если строка распознана, возвращается результат этого выражения.
- Только если это не удалось, отбрасывает незнакомые слова и вычисляет оставшуюся часть.
Поэтому повседневные выражения работают отдельной строкой без вводных слов, а несколько лишних слов не мешают вычислению:
two and a half hours in minutes даёт 150 min$62 with 18% tip даёт $73.16a third of £90 даёт £30.005 apples + 3 oranges даёт 8При желании строку можно начать с what is или calculate. Varlig одинаково понимает what is a third of £90 и a third of £90.
Короткое описание до или после выражения допустимо: Varlig пропускает несколько обычных слов. Поэтому coat £45 with 20% VAT и £45 with 20% VAT please по-прежнему добавляют НДС, а 65 kg in pounds for the team выполняет перевод единиц. Длинные описания, а также текст, который нужно однозначно отделить от вычислений, лучше оформлять меткой или комментарием:
coat £45 with 20% VAT даёт £54.00£45 with 20% VAT please даёт £54.0065 kg in pounds for the team даёт 143.3004704202 lbCoat: £45 with 20% VAT даёт £54.00£45 with 20% VAT # new winter coat for Sam даёт £54.00Выражения, уже называющие участников или предметы, например split £90 among 3 friends, должны заканчиваться этим существительным. Последующие пояснения оформляйте комментарием.
Метки и комментарии описаны в разделе Запись вычислений.
Числа прописью
Целые числа можно писать английскими словами, с and и дефисами или без них:
twelve hundred даёт 1,200one hundred and twenty даёт 120twenty-five plus five даёт 30Для десятичной дроби напишите point, а затем каждую цифру по отдельности. one point two five означает 1,25; форма one point twenty five не поддерживается.
three point one four даёт 3.14one point two five times four даёт 5Дроби
Обыкновенные дроби прописью работают с of, а также в составе смешанных чисел перед единицей измерения:
three quarters of 200 даёт 150two thirds of 450 g даёт 300 ga quarter of 200 даёт 50third of 90 даёт 30two and three quarters hours даёт 2.75 hoursПоддерживаются знаменатели half, third, quarter (или fourth), fifth, sixth, seventh, eighth, ninth и tenth, а также формы множественного числа, например thirds и halves. Артикль a необязателен: quarter of 100 равно 25, а third of March по-прежнему означает дату. Дроби сохраняют точность, поэтому one third times three даёт ровно 1, а не 0,9999999999.
Доли часа можно записывать привычными английскими выражениями; результат выводится в часах и минутах:
half an hour + 20 min даёт 50 minquarter of an hour даёт 15 minan hour and a half даёт 1 hour 30 minАрифметика словами
Используйте plus, minus, times, multiplied by и divided by, свободно сочетая их с цифрами и символами. Порядок действий обычный: умножение и деление выполняются до сложения и вычитания. Для другого порядка используйте скобки.
fifty times twenty plus ten даёт 1,010twenty divided by five plus two multiplied by three даёт 10(two plus three) times four даёт 20seven times £8.50 даёт £59.50Покупки: товары, скидки, налоги и чаевые
Выражение N items at P each умножает количество на цену. Вместо items подойдёт существительное, описывающее покупку, например tickets, coffees или bottles. Слово each можно опустить, а вместо предлога использовать @. Выражения after P% discount и with P% off вычитают процент из предшествующей суммы; with P% tax, with P% VAT, with P% GST и with P% tip прибавляют процент. Регистр неважен: with 20% vat тоже работает.
3 tickets at £12.50 each даёт £37.503 coffees @ £2.80 даёт £8.402 adults at £15 + 3 children at £8 даёт £54.00£15 each for 4 people даёт £60.00£80 after 25% discount даёт £60.00£80 with 25% off даёт £60.00£45 with 20% VAT даёт £54.00$62 with 18% tip даёт $73.165 items at $20 each after 15% discount with 8% tax даёт $91.80Количество может быть целым или дробным, поэтому эта же форма подходит для товаров на вес или на розлив. Содержимое одной единицы может быть ценой, числом без единиц или измеряемой величиной. Слово items — обычное существительное во множественном числе, и добавлять к нему ещё одно each не требуется.
2.5 tickets at £4 each даёт £10.0012 gallons at $3.59 даёт $43.082.5 kg at £4 даёт £10.006 items at £9.90 даёт £59.4014 boxes at 12 kg each даёт 168 kghalf a bottle at £2.35 даёт £1.18Упаковки, коробки и бутылки можно описать как на ценнике. N things of M означает указанное число единиц с заданным содержимым каждой. Цена после выражения относится ко всей упаковке, а при добавлении each — к каждому предмету в ней:
3 packs of 500 g даёт 1,500 g2 packs of 12 at £3.99 даёт £7.983 boxes of 48 at £27.60 each даёт £3,974.40a dozen eggs at £0.30 each даёт £3.602 pints of milk at 65p даёт £1.3012 payments of £50 даёт £600.00Размер перед количеством описывает товар, поэтому число рядом с at или @ по-прежнему задаёт количество. Символ x возле товара также обозначает его количество, а количество за период сохраняет этот период:
500g pasta 3 packs at £1.10 each даёт £3.30330ml cans 24 @ 45p даёт £10.80oat milk x3 £1.90 each даёт £5.703x oat milk £1.90 each даёт £5.702 coffees a day at £3.20 даёт £6.40/day2 coffees a day at £3.20 * 5 days даёт £32.00Два количества подряд перемножаются: так в смете можно указать число людей и длительность работы. А количество предметов, разложенных по ёмкостям заданной вместимости, позволяет вычислить число ёмкостей:
3 men 7 hrs @ £42/hr даёт £882.002 x 128 GB cards at £119 даёт £238.0060 bottles in cases of 12 даёт 5 casesПоправки применяются слева направо, каждая — к уже полученному результату. Две скидки по 10% дают общую скидку 19%, а не 20%. Чаевые, добавленные после налога, рассчитываются от суммы с налогом:
£50 after 10% discount after 10% discount даёт £40.50$84 with 8% tax with 15% tip даёт $104.33Как разделить счёт
Эти формы делят общую сумму между указанным числом людей:
split £90 among 3 даёт £30.00share £90 between 3 даёт £30.00£90 split among 3 даёт £30.00£90 between 3 даёт £30.00£90 split 3 ways даёт £30.00После числа можно указать, кто участвует в расчёте, чтобы запись читалась естественнее:
split £100 among 3 people даёт £33.33share £60 between 4 friends даёт £15.00£97 between 6 of us даёт £16.176 people split £97 даёт £16.17Платёж в рассрочку — то же деление, записанное привычной для оформления покупки фразой:
£3,603.91 in 9 instalments даёт £400.43split £3,603.91 into 9 payments даёт £400.43divide £3,603.91 into 9 даёт £400.4311 instalments of £74.80 даёт £822.80balance = £900balance in 3 instalments даёт £300.00Общую сумму можно задать именем, как в последних двух строках: сначала вычислить остаток к оплате, а затем распределить его по платежам.
Количество должно быть целым числом. Деление между 0 участников выводит Error: divide by zero. Вне этих выражений split — обычное слово, которое может входить в имя: при my split = £45 выражение my split + £5 равно £50,00. Если общая сумма сама задана вычислением, заключите его в скобки, чтобы однозначно указать, что делится. Именованные значения тоже подходят:
split (£60 + £24) among 3 даёт £28.00bill = £84people = 3split bill among people даёт £28.00Выражения работают и внутри условий. Вычисляется только выбранная ветвь:
bill = £112people = 4if bill > £100 then split bill among people else bill даёт £28.00Меньше и больше заданного значения
A less than B вычитает A из B, а A more than B прибавляет A к B:
£15 less than £80 даёт £65.005 less than 20 даёт 15£15 more than £80 даёт £95.005 more than 20 даёт 25the difference between вычисляет расстояние между двумя величинами независимо от их порядка, поэтому результат никогда не бывает отрицательным:
the difference between £85 and £120 даёт £35.00Преобразование результата
Перевод единиц в конце строки применяется к результату всего выражения. Можно использовать in, to, as, -> или →, как описано в разделе Единицы и их перевод:
two and three quarters hours in minutes даёт 165 minthree quarters of 2 kg in g даёт 1,500 gКонвертация валют использует ежедневные курсы Европейского центрального банка, поэтому ответ меняется изо дня в день:
split €120 among 4 in USD даёт $35.10Ваши имена имеют приоритет
Если имя переменной в заметке совпадает со словом в выражении, приоритет у переменной. Здесь share содержит процент, поэтому вторая строка вычисляет 25% от £2 000, а не пытается что-либо разделить:
share = 25%share of £2,000 даёт £500.00То же относится к числам прописью: после one = 7 выражение one times two даёт 14. Если это не тот результат, который нужен, выберите другое имя или иную форму выражения.
Но если строка распознаётся как целое выражение, приоритет у него. Даже если вы дали переменной имя из тех же слов, смысл строки не изменится:
each = £43.413 tickets at £12.50 each даёт £37.50per night = £90£118 per night * 3 nights даёт £354.00monthly repayment = £300monthly repayment on £15000 over 4 years at 6% даёт £352.28Наведите указатель на слова, чтобы увидеть пояснение «Part of the phrase here, not the variable each = £43.41.» — здесь это часть выражения, а не переменная. Слова per, a и an внутри величины на единицу всегда относятся к этой записи, а не к вашей переменной.
Перевод единиц работает аналогично: после in, to или as единица имеет приоритет перед именем, содержащим число без единиц. Поэтому переменная с таким именем не препятствует переводу:
miles = 1220 km in miles даёт 12.4274238447 miОбычные имена не мешают подсчёту предметов. Число непосредственно перед существительным во множественном числе задаёт количество. Поэтому в заметке может быть собственная переменная people, а счёт можно разделить между другим числом людей:
people = 4split £1480 among 5 people даёт £296.00split £1480 among people даёт £370.00Наведите указатель на people в первом выражении деления, чтобы увидеть «Counts people here, not the variable people = 4.» — здесь слово обозначает людей, а не переменную.
Это позволяет называть значения привычным образом. Имя может совпадать с названием функции, например floor, или содержать слова to, in или needed: Varlig прочитает его как вашу переменную:
floor = 12 m²floor * 2 даёт 24 m²paint needed = 12.44 Lpaint needed to 1 dp даёт 12.4 LПодробнее о выборе имён — в разделе Имена.
Фразы на других языках
Английские выражения с этой страницы работают в любой заметке. Если для заметки выбран немецкий, французский, испанский, шведский, португальский, украинский или турецкий формат чисел, она также понимает выражения этого языка для долей, четырёх арифметических действий, перевода единиц и суммирования строк выше. Формат задаётся в Settings › Calculations, в меню заметки Calculation Settings for This Note… или через System Region на Mac с соответствующим языком системы.
| Язык | Доля | Конвертация | Суммирование |
|---|---|---|---|
| Немецкий | 20 % von 150 |
5 km nach m |
Summe |
| Французский | 20 % de 150 |
5 km en m |
somme |
| Испанский | 20 % de 150 |
5 km en m |
suma |
| Шведский | 20 % av 150 |
5 km i m |
summa |
| Португальский | 20% de 150 |
5 km em m |
soma |
| Украинский | 20% від 150 |
5 км у м |
сума |
| Турецкий | 150'nin %20'si |
5 km kaç m |
toplam |
Каждая строка даёт тот же результат, что и её английский вариант. Эти слова распознаются только в заметках соответствующего языка, поэтому в английской заметке de, en и a сохраняют своё обычное значение. Китайские выражения, например 150的20%, работают в любых заметках. В Format › Calculation Examples… первыми показаны примеры на языке заметки.
В турецком знак процента ставится перед числом: %20 и yüzde 20 означают 20%, а результат в турецком формате выводится как %20. Знак после числа, например в 10 % 3, по-прежнему означает остаток от деления.
Денежный формат тоже зависит от языка: бразильский португальский использует R$ 12,50, украинский — 12,50 ₴, турецкий — ₺12,50. Обозначение грн означает гривну в любой заметке, а TL — турецкую лиру только в заметке с турецким форматом.
Что не распознаётся
Некоторые записи похожи на математические выражения, но не поддерживаются. Чтобы не вычислять только часть строки и не вводить в заблуждение, Varlig показывает ошибку:
2d6 даёт Unsupported: Dice notation is not supported at "d"10 ± 0.5 даёт Unsupported: Uncertainty notation is not supported at "±"5 < 4 < 10 даёт Unsupported: Comparison chains are not supported at "<"; combine separate comparisons with &&В каждом сообщении указан символ, на котором разбор остановился, поэтому сразу видно, что нужно изменить.
10 +/- 0.5 вызывает ту же ошибку о неопределённости. Для проверки диапазона запишите два сравнения через &&, например 4 < 5 && 5 < 10. См. Операторы, сравнения и условия.
Всё вместе
Вот счёт в ресторане на четверых, где скидка на вино, обслуживание и доля каждого рассчитаны с помощью словесных выражений:
# Dinner outmains = 4 items at £17.50 each даёт £70.00wine = 2 bottles at £28 each after 25% discount даёт £42.00bill = mains + wine даёт £112.00people = 4total = bill with 12.5% tip даёт £126.00split total among people даёт £31.50Каждая строка читается как обычная английская фраза. Измените people или цену — доля каждого обновится.