错误、诊断与限制
当 Varlig 无法计算某一行时,会在结果的位置显示错误。你可以在下面查找对应的错误信息,了解通常的原因。本页还列出了 Varlig 能识别但不支持的记法,以及防止计算规模过大的各项限制。某一行出错不会影响笔记其余部分的运行。
还没输入完的名称暂时不会显示错误:在输入 price 的过程中,5 + pri 会等到你停顿大约一秒半,或者把光标移开,才显示错误。之后仍未定义的名称,比如 5 + rent2 中的 rent2,就会显示为错误,而绝不会被读成其中的数字。
错误信息
| 信息 | 含义 | 示例 |
|---|---|---|
Error: divide by zero |
除数恰好为零 | 10 / 0, split £90 among 0 |
Error: division without divisor |
赋值的值看起来像网址或带点的名称,后面跟着 / |
链接 = example.com/docs |
Error: imaginary number. For a complex answer, write … |
对负数求实数平方根或对数,或者反函数的参数超出其范围。错误信息会写出应改用的复数形式,例如 sqrt(-4 + 0i) |
sqrt(-4), ln(-1), asin(2) |
Error: incompatible units: can't add km and kg |
单位不匹配,或者某个值不适用于该运算,例如比较日期或用 [a:b] 切片。信息会点出两边的单位,换算时会写 can't convert |
2 m + 3 kg, 5 kg in L, [1, 2, 3][0:2] |
Error: unsupported multiplicative unit |
对金额或质量开方、开方后会留下无法整除的单位,或者将温度相乘 | sqrt(£4), sqrt(4 m^3), 2 celsius * 3 m |
Error: unsupported exponent operation |
单位系统无法表示的幂 | 2 m ^ 0.5 |
Error: unsupported unit in rate |
汇率的单位与换算不匹配 | £100 in EUR at 1.17 EUR/USD |
| 无结果 | 没有可显示的内容:未完成的计算、未定义的名称,或者定义行 | x =, 小费(账单, 比例) = 账单 * 比例 |
Error: ∞ |
结果对数字格式而言太大或太小、期限为零的贷款,或者无法获取的历史汇率 | 10^1000, monthly repayment on £12000 over 0 years at 4% |
Error: missing rate: XXX |
没有该货币的汇率,例如汇率尚未加载时 | 100 USD in EUR |
Error: imprecision due to magnitude |
较小的数与极大的数一起运算时会丢失 | 1e100 + 1 |
Error: overflow |
日期或数字超出了 Varlig 能表示的范围 | 1 January 2024 + 100000000 years |
Error: calculation limit |
达到了某项限制;颠倒顺序的写法 5 combinations of 2 也会显示此错误 |
range(1, 2000), factorial(100000) |
Unsupported: Unknown name: … |
在 sum、product、solve、integrate 或某点处的导数中使用了没有值的名称 |
integrate(a*x, x, 0, 1) |
Error: no real solution |
没有实根的二次方程。Varlig 会如实说明,而不会给出复数根 | solve(x^2 + 1 = 0) |
Unsupported: Expected a square matrix |
对行数与列数不相等的矩阵使用 det、inverse 或 trace |
det([[1,2,3],[4,5,6]]) |
Unsupported: Singular matrix has no inverse |
行列式为零,各行不是线性无关的,因此没有逆矩阵 | inverse([[1,2],[2,4]]) |
Unsupported: Matrix entries must be plain numbers; … |
矩阵中出现了带单位的量、金额或复数。没有哪个矩阵运算能保住它们 | det([[1 kg,2],[3,4]]) |
Unsupported: No value repeats, so this list has no mode; … |
使用 mode 时没有任何值重复出现,或者几个值并列。信息会点出 modes、median 和 average |
mode([1,2,3]) |
Unsupported: A variance squares its observations, so it takes plain numbers; … |
对带单位的量求方差,其结果会是单位的平方。请改用 stddev |
variance([1 kg, 2 kg]) |
Unsupported: A percentile is between 0 and 100 |
percentile 的名次超出了取值范围 |
percentile([1,2,3,4],101) |
Unsupported: A quartile is 0, 1, 2, 3 or 4 |
quartile 超出了取值范围 |
quartile([1,2,3,4],5) |
Unsupported: unrecognized calculation … |
Varlig 无法读取该行的某一部分:逗号没有按三位一组分隔千位的数字(逗号绝不会被当作小数点),或者本该是值的位置出现了一个词——信息会点出这个词,并给出你定义过的最接近的名称。含有数字或下划线的名称也算作词,位于括号中、函数调用中或换算之前的名称同样如此 | 12,50, rnt + £200, rent2 * 12 |
Unsupported: money times money … |
两个金额相乘,这在日常中没有意义。请改为乘以数量或百分比 | $4 * $4 |
Unsupported: a percentage and an amount do not add up … |
百分比没有可以计算的基数。请说明它针对什么,例如 1.4% + 20p on £2,255 或 £31.50 * 4% + 20p |
4% + 20p |
Unsupported: at needs a price, a rate or a percentage after an amount |
at 位于两笔相同货币的金额之间,这本身没有任何含义 |
£500 at £20 |
Unsupported: no amounts above to add up |
total、sum、average、max 或 min 行所在的那一段上方没有任何金额,通常是因为中间隔着标题或 --- 分隔线 |
# Groceries 标题下面没有金额时单写一行 total |
Unsupported: conversion to … |
换算目标以你定义的某个名称开头,因此它既可能是比例尺,也可能是单位 | 定义了 scale = 76.2 时写 15.2 m in scale miles |
Unsupported: an amount and an amount per … do not add up … |
单独的金额与按周期计的金额相加。请为单独的金额也注明相同的周期 | £100 + £50/month |
Unsupported: weeks or days of an amount need its period … |
对某个本身没有周期的命名金额按周或按天计算 | 定义了 房租 = £1,850 时写 5 weeks 房租 |
Unsupported: a distance or weight times … has no everyday meaning |
度量值乘以一段时间。请写成每个周期的量,例如 2,500 miles a year * 3 years |
2,500 miles * 3 years |
Unsupported: ambiguous commas in … |
括号内的逗号既可能是千位分隔符,也可能用于分隔各个值。信息会列出两种写法 | max(1,000,2,000), sum(10,100) |
Unsupported: unknown time zone: … |
时区换算中出现了 Varlig 无法识别的地点或时区 | 3:00 pm London in Narnia |
Error: undefined variable: … |
某个名称在还没有金额时就被使用,例如因为它自己那一行出了错 | 定义了 成本 = hello 时写 2 * 成本 |
Error: line2 refers to a deleted line |
行引用所指的那一行被删除了。撤销可以把它找回来 | 删除第 2 行之后写 line2 * 2 |
Unsupported: line1 has no answer |
引用的那一行没有显示任何内容,比如它是一个标题 | 标题下面写 line1 + line2 |
Unsupported: no lines tagged #food above |
标签合计所在的那一段上方没有带该标签的行 | 没有任何行带标签时写 total of #food |
Unsupported: #4A is no tag: a tag name starts with a letter |
标签合计的名称以数字开头 | total of #4A |
Unsupported: no amounts on the checklist above |
清单合计所统计的条目中没有任何价格 | 条目都没有金额时写 planned |
Error: No note named “…” |
use 行指向的笔记不存在。受保护的、位于废纸篓中的以及循环引用的源笔记,各有自己的提示信息 |
没有这篇笔记时写 use [[假设]] |
Unsupported: an inflation projection needs this year or a later one |
通胀推算指向的是过去的年份 | value of $500 in 2020 at 3% inflation |
Unsupported: unknown unit: … |
换算一个数,或把它加到日期上时,数字后面的词不是单位;请在单位目录中核对拼写 | 3 bananas in kg, today + 2 sprints |
Unsupported: unknown ingredient: … |
在杯换算成克的计算中,食材的密度未知;请从食材列表中选一个相近的 | 1 cup rice in g |
Unsupported: … needs a rate |
提到了某种税,但没有给出百分比。请加上税率,例如 with 20% VAT,或者在设置中设置销售税 |
£10.50 plus VAT |
Unsupported: dates can't be added |
用 + 连接了两个日期。如需计算两者之间的时间,请将它们相减;或者加上一段时长 |
today + 25 December 2026 |
Unsupported: Function names can't contain spaces |
函数名称由多个词组成。信息会建议改用以下划线连接的同一名称 | 圆 面积(半径) = pi * 半径^2 |
Unsupported: … has no … |
该月没有这个星期几或这一天,因此不会猜测日期 | fifth monday of February 2025, February 30 2025 |
Unsupported: recurring dates: … |
重复的日程,而不是某一个日期。请直接询问你需要的日期,例如 next monday |
every monday, every 2 weeks from 1 October 2026, one a week from 5 October 2026 |
Unsupported: … |
Varlig 能识别但无法执行的内容,例如短语后面多出的词;信息会说明出了什么问题 | split £90 among 2.5 |
不支持的记法
有些记法看起来像数学写法,但并不受支持。Varlig 不会只计算该行的一部分并给出误导性的结果,而是会显示一条具体的信息,并引用问题开始处的符号,例如 at "±"。
| 记法 | 信息 | 替代写法 |
|---|---|---|
10 ± 0.5, 10 +/- 0.5 |
Unsupported: Uncertainty notation is not supported at "±" |
分别计算两端:10 - 0.5、10 + 0.5 |
2d6 |
Unsupported: Dice notation is not supported at "d" |
random(1, 6) + random(1, 6) |
5 < 4 < 10 |
Unsupported: Comparison chains are not supported at "<"; combine separate comparisons with && |
4 < 5 && 5 < 10 |
限制
| 项目 | 限制 |
|---|---|
| 行和笔记的大小 | 每行 64 KiB;每篇笔记 1 MiB、10,000 行 |
| 精确分数 | 分子和分母各自最多 4,096 比特 |
| 小数 | 系数最大为 2^128−1,指数范围为 −128 到 127 |
列表(包括 range) |
1,024 项 |
| 矩阵 | 1 至 32 行、1 至 32 列 |
| 嵌套的列表或矩阵括号 | 16 层 |
| 对计数变量求和或求积 | 10,000 项 |
| 高级运算(矩阵、解方程、微积分) | 共享 100,000 步的预算 |
| 自定义函数的参数 | 32 个 |
| 嵌套函数调用 | 16 层,每个顶层调用最多共 16,384 次调用 |
| 一篇笔记中定义的函数 | 1,024 个 |
| 以公式形式给出的导数 | 8,192 个字符 |
| 方程求解器 | 128 次迭代 |
| 积分 | 2,048 次细化,深度最多 20 层 |
达到限制时,该行会显示 Error: calculation limit。不会显示任何部分结果,笔记的其余部分照常工作。有关函数限制的具体说明,请参阅自定义函数。