解读结果:显示与精度
本页说明 Varlig 如何显示每一行旁边的结果:你会看到几位小数、大数字何时会被缩写、金额如何舍入、每种结果是什么样子,以及结果背后的数字有多精确。你可以把它当作指南从头读起,也可以在结果出乎意料时直接查阅相应的表格。单行计算的限制列在接近末尾的部分。
存储的值与显示的结果
每一行的处理都分两步。首先执行计算,并保留完整的值。然后将结果格式化以便阅读,这可能包括对它进行舍入。舍入只影响你看到的内容。
后面的行使用某个名称时,用的是完整的值,而不是舍入后显示的数字:
份额 = 250 / 3 结果为 83.3333333333份额 * 3 结果为 250如果你把看到的数字输入到新的一行中,得到的将是舍入后的数字。要保持完整精度,请使用名称。
小数位
结果最多显示十位小数,最后一位会进行舍入。末尾的零会被省略,因此你看到的是 0.75,而不是 0.7500000000。
2 / 3 结果为 0.66666666671 / 8 结果为 0.125通过食材密度进行的换算最多显示九位有效数字,也就是密度本身的精度,因此 1 cup sugar in grams 显示为 200 g。存储的值会保留全部数字。
要显示不同的小数位数,请在 Settings(设置)中更改默认值,计算选项接受 0 到 15。要只更改某一行,请使用该行快捷菜单中的结果格式选项。这两种方式都只改变显示。
要舍入值本身,请写 to 2 dp。之后的行使用的就是舍入后的值。舍入时,恰好一半的情况会朝远离零的方向进位,因此 2.345 to 2 dp 为 2.35,round(-2.5) 为 -3。
精确值 = 2 / 3 结果为 0.6666666667近似值 = 2 / 3 to 2 dp 结果为 0.67精确值 * 3 结果为 2近似值 * 3 结果为 2.01有关更多舍入方式,请参阅舍入。
金额
金额遵循其货币的规则,而不是默认的十位小数:
- 舍入到货币的精度。 大多数货币显示两位小数,日元不显示小数,科威特第纳尔显示三位小数。货币参考列出了所有货币的情况。
- 保留末尾的零。
$15显示为$15.00。 - 较小的正数金额会保留其数字。 不足一美分的金额(例如
$0.004)不会被舍入为$0.00。 - 单价按你输入的样子最多保留四位小数,因此
£0.075/kWh这样的电价或£1.499/L这样的油价会完整显示。以便士或美分书写的金额也是如此,所以6.2p显示为£0.062,24.5p/kWh显示为£0.245/kWh,而用它们算出的总额会舍入到便士:148.9p/L * 45 L是£67.01。小数位更多时,低于 £1 的价格显示四位有效数字(£0.12345/kWh显示为£0.1235/kWh),其他价格(例如£8/kg / 3)则舍入到便士。 - 加密货币最多显示十位小数,与普通数字相同。
把金额赋值给名称的行,显示金额的方式与其他行相同。名称会保留完整的值,因此之后使用它的行仍然精确。
£250 / 3 结果为 £83.33账单 = £250 / 3 结果为 £83.33账单 * 3 结果为 £250.00¥1,250 / 4 结果为 ¥313£0.075/kWh 结果为 £0.075/kWh£8/kg / 3 结果为 £2.67/kgSettings 中的货币选项可以关闭按货币精度舍入、改为显示代码而不是符号(15.00 USD 而不是 $15.00),或者去掉末尾的零($15 而不是 $15.00)。
大数字与小数字
从 100,000 起,普通数字会用字母缩写:k 表示千,M 表示百万,G 表示十亿(即一千个百万),T 表示万亿,P 表示千万亿。非常大和非常小的数字会改用科学记数法。
金额在一百万以下会完整显示到分,所以缩写永远不会隐藏你支付或收入的金额的任何部分:£199,999.98 仍显示为 £199,999.98。从一百万起,金额也会缩写:普通数字使用 G 的地方,金额使用 B,并且最多显示三位小数。
| 大小 | 普通数字 | 金额 |
|---|---|---|
| 小于 100,000 | 99,999 |
$99,999.99 |
| 100,000 起 | 250k, 123.456k |
$150,000.00 |
| 1,000,000 起 | 1.5M, 1.234567M |
$2.5M |
| 10⁹ 起 | 8.1G, 1.23456789G |
$1.235B |
| 10¹² 起 | 2T |
$2T |
| 10¹⁵ 起 | 100P |
$100P |
| 大于 10¹⁷ | 1e18, 6.02e23 |
$1e18 |
| 小于 0.000001 且不为零 | 1e-7, 5e-11 |
250000 结果为 250k£99,999.99 * 2 结果为 £199,999.98$1234567.89 结果为 $1.235M8,100,000,000 结果为 8.1G$1,234,567,890 结果为 $1.235B0.0000001 结果为 1e-7字母只改变显示。1.5 million 存储为 1,500,000,显示为 1.5M;3bn 显示为 3G。小于 100,000 的结果使用千位分隔符(99,999)。
带单位的数字总是完整写出,因为单位旁边的字母读起来会像词头:否则 175,200 Wh 可能会被看成千瓦时。只有大于 10¹⁷ 或小于 0.000001 的值才会改用科学记数法。
175200 Wh 结果为 175,200 Wh1 light year in km 结果为 9,460,730,472,580.8 km在 Settings 中,你可以关闭缩写形式,让数字完整显示,也可以关闭千位分隔符。
结果的种类
每种值都有自己的格式。下表为每种值列出一两个示例。
| 种类 | 你输入的内容 | 结果 |
|---|---|---|
| 数字 | 1,000 + 10 |
1,010 |
| 金额 | $100 + 15%, 50 CHF |
$115.00, CHF 50.00 |
| 带单位的量 | 65 kg in lb, 12 kg / 4 m² |
143.3004704202 lb, 3 kg/m² |
| 百分比 | 15 / 60 as % |
25% |
| 倍数 | £60 / £40 as x |
1.5x |
| 分数 | 0.75 as fraction, 22/7 as fraction |
¾, 3 1/7 |
| 科学记数法 | 12345.6789 in sci |
1.23456789e4 |
| 十六进制、二进制、八进制 | 255 in hex, 255 in binary, 255 in octal |
0xFF, 0b11111111, 0o377 |
| 真或假 | £45 > £40 |
true |
| 日期 | March 12 2024 + 3 days |
March 15, 2024 |
| 时刻 | 12:30 PM, 1:00:30 |
12:30 PM, 01:00:30 |
| 时长 | 9:30 to noon, 30 min - 2 hours |
2 hours 30 min, -(1 hour 30 min) |
| 日期范围 | Q1 2025 |
Jan 1 – Mar 31, 2025 |
| 时间码 | 48 frames @ 24 fps |
00:00:02:00 |
| 圈速时间 | 1:23:45.67 |
01:23:45.67 |
| 配速 | 5 km in 26:45 |
05:21/km |
| 度、分、秒 | 45.5 degrees as DMS |
45° 30′ 0″ |
| 时、分、秒 | 1.5 hours as HMS |
1h 30m 0s |
| 音高 | 440 Hz to pitch |
A4 |
| 列表 | [1, 2+3, 4*2] |
[1, 5, 8] |
| 矩阵 | identity(2) |
[[1, 0], [0, 1]] |
| 复数 | 3 * (2 + 3i), conj(-1 + i) |
6 + 9i, -1 - i |
| 文本 | weekday on March 12 2024, differentiate(x^3, x) |
Tuesday, (3*(x^(3-1))) |
有几种格式取决于今天的日期。今年之内的日期不显示年份,接近今天的日期可能会显示为相对的说法:
March 12 结果为 March 12tomorrow at 1am 结果为 Tomorrow at 1:00 AM还有两种结果值得了解:
- 没有结果也没有错误,表示该行没有可显示的内容:注释、空行、函数定义,或者
总计 =这样尚未写完的行。 pending…表示该行需要的数据暂时还不可用。
结果有多精确
精确运算
整数、小数和分数都以精确形式存储。加、减、乘、除以及整数次幂运算都会保持精确,包括 ⅓ 这类无法写成有限小数的分数。用 == 比较时检查的是精确值,不做任何舍入。
0.1 + 0.2 == 0.3 结果为 true1/3 + 1/3 + 1/3 == 1 结果为 true平方根在能精确表示时是精确的,否则精确到 38 位有效数字(多余的数字会被截断,而不是舍入)。标准差使用同样的平方根。gcd 和 lcm 是精确的,结果不为负,并且直接作用于分数,不会先进行舍入。
sqrt(2.25) 结果为 1.5sqrt(1e-64) 结果为 1e-32gcd(12, 18) 结果为 6近似结果
有些运算无法精确完成,因此会使用二进制浮点数,其精度只有有限的位数:
- 三角函数、对数和指数
- 非整数次幂,例如
2^0.5,以及指数带小数的科学记数法字面量,例如1e2.5 - 部分单位换算
- 解方程、数值导数和积分
- 矩阵分解和特征值
- 除基本运算以外的复数函数
由于 == 比较的是精确值,两个近似结果可能看起来一样,却并不相等。请改为用一个很小的容差来比较两者之差:
sqrt(2)^2 结果为 2sqrt(2)^2 == 2 结果为 falseabs(sqrt(2)^2 - 2) < 0.000000001 结果为 true请根据数字的大小选择合适的容差。屏幕上显示十位小数,并不能保证这十位小数都正确,对于困难的数值问题尤其如此。
在列表、矩阵和复数中,如果某个部分只是浮点舍入误差,远小于周围的值,就会显示为 0。这样,矩阵分解或 exp(i * pi) 之类的结果会更易于阅读。存储的值仍保留其数字,因此同样适用容差检查:
exp(i * pi) 结果为 -1abs(exp(i * pi) + 1) < 0.000000001 结果为 true数字大小
- 小数存储为一个不超过 2¹²⁸−1(约 38 位数字)的整数,乘以 10⁻¹²⁸ 到 10¹²⁷ 之间的某个 10 的幂。超过
1e127的数字只要位数放得下,仍然可以使用。 - 分数的分子和分母各自最多可达 4,096 比特。
- 把极小的数加到极大的数上可能会丢失极小的部分:
1e30 + 0.001显示为1e30。 - 乘法或乘方超出范围时,无论结果太大还是太小,都会显示
Error: ∞。计算绝不会溢出回绕成错误的值。
1e30 + 0.001 结果为 1e301e100 * 1e100 结果为 Error: ∞限制
每一行都必须在以下限制之内。达到某项限制时,只有该行会显示错误(通常是 Error: calculation limit),笔记的其余部分照常工作。部分求和或未完成的结果绝不会被当作答案显示。要解决这个问题,请缩小范围、矩阵、嵌套层数或问题的规模。
| 项目 | 限制 |
|---|---|
| 单行 | 64 KiB 文本,或 4,096 个数字、单词和符号 |
列表或 range |
1,024 项 |
| 矩阵 | 1 至 32 行、1 至 32 列,所有行长度相同 |
| 嵌套列表和内置函数调用 | 16 层 |
对范围进行 sum 或 product |
10,000 项 |
| 高等数学 | 100,000 步,由嵌套运算共享,因此嵌套计算会更快达到上限 |
| 自定义函数 | 32 个参数;函数调用函数最多嵌套 16 层,调用次数与函数体行数合计最多 16,384 |
| 分数 | 分子或分母 4,096 比特 |
| 符号求导 | 输出 8,192 个字符 |
solve |
128 次迭代 |
integrate |
2,048 次细化,20 层细分 |
Varlig Calc 目前不支持通用符号代数、不定积分、非线性方程组、历史加密货币价格、2d6 这样的骰子记法、10 ± 0.5 这样带不确定度的运算,以及 1 < x < 5 这样的链式比较。有关高等数学功能如何运作的更多信息,请参阅高等数学:功能与限制。
综合示例
下面是一个旅行预算,用到了本页的大部分规则:
机票 = £1,284.60 结果为 £1,284.60酒店 = £96.50 * 4 结果为 £386.00总计 = 机票 + 酒店 结果为 £1,670.60每人 = 总计 / 3 结果为 £556.87每人 * 3 结果为 £1,670.60每人 / 总计 as % 结果为 33.3333333333%每人 / 总计 as fraction 结果为 ⅓总计 to 0 dp 结果为 £1,671.00总计 * 1000 结果为 £1.671M每人 = 总计 / 3显示的是舍入到便士的份额,而名称保留完整的值。每人 * 3使用的是完整的值,因此结果正好回到 £1,670.60,而不是 £1,670.61。- 百分比不是金额,因此显示十位小数。以分数表示时,它是精确的。
to 0 dp舍入的是值本身,由于是金额,末尾的零仍然保留。- 乘以 1,000 后超过 1,000,000,因此结果缩写为
£1.671M。