跳到主要内容
Varlig 指南
Varlig 首页

解读结果:显示与精度

本页说明 Varlig 如何显示每一行旁边的结果:你会看到几位小数、大数字何时会被缩写、金额如何舍入、每种结果是什么样子,以及结果背后的数字有多精确。你可以把它当作指南从头读起,也可以在结果出乎意料时直接查阅相应的表格。单行计算的限制列在接近末尾的部分。

存储的值与显示的结果

每一行的处理都分两步。首先执行计算,并保留完整的值。然后将结果格式化以便阅读,这可能包括对它进行舍入。舍入只影响你看到的内容。

后面的行使用某个名称时,用的是完整的值,而不是舍入后显示的数字:

calc
份额 = 250 / 3 结果为 83.3333333333
份额 * 3 结果为 250

如果你把看到的数字输入到新的一行中,得到的将是舍入后的数字。要保持完整精度,请使用名称。

小数位

结果最多显示十位小数,最后一位会进行舍入。末尾的零会被省略,因此你看到的是 0.75,而不是 0.7500000000

calc
2 / 3 结果为 0.6666666667
1 / 8 结果为 0.125

通过食材密度进行的换算最多显示九位有效数字,也就是密度本身的精度,因此 1 cup sugar in grams 显示为 200 g。存储的值会保留全部数字。

要显示不同的小数位数,请在 Settings(设置)中更改默认值,计算选项接受 0 到 15。要只更改某一行,请使用该行快捷菜单中的结果格式选项。这两种方式都只改变显示。

要舍入值本身,请写 to 2 dp。之后的行使用的就是舍入后的值。舍入时,恰好一半的情况会朝远离零的方向进位,因此 2.345 to 2 dp2.35round(-2.5)-3

calc
精确值 = 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.06224.5p/kWh 显示为 £0.245/kWh,而用它们算出的总额会舍入到便士:148.9p/L * 45 L£67.01。小数位更多时,低于 £1 的价格显示四位有效数字(£0.12345/kWh 显示为 £0.1235/kWh),其他价格(例如 £8/kg / 3)则舍入到便士。
  • 加密货币最多显示十位小数,与普通数字相同。

把金额赋值给名称的行,显示金额的方式与其他行相同。名称会保留完整的值,因此之后使用它的行仍然精确。

calc
£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/kg

Settings 中的货币选项可以关闭按货币精度舍入、改为显示代码而不是符号(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
calc
250000 结果为 250k
£99,999.99 * 2 结果为 £199,999.98
$1234567.89 结果为 $1.235M
8,100,000,000 结果为 8.1G
$1,234,567,890 结果为 $1.235B
0.0000001 结果为 1e-7

字母只改变显示。1.5 million 存储为 1,500,000,显示为 1.5M3bn 显示为 3G。小于 100,000 的结果使用千位分隔符(99,999)。

带单位的数字总是完整写出,因为单位旁边的字母读起来会像词头:否则 175,200 Wh 可能会被看成千瓦时。只有大于 10¹⁷ 或小于 0.000001 的值才会改用科学记数法。

calc
175200 Wh 结果为 175,200 Wh
1 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)))

有几种格式取决于今天的日期。今年之内的日期不显示年份,接近今天的日期可能会显示为相对的说法:

calc结果取决于今天的日期或实时数据
March 12 结果为 March 12
tomorrow at 1am 结果为 Tomorrow at 1:00 AM

还有两种结果值得了解:

  • 没有结果也没有错误,表示该行没有可显示的内容:注释、空行、函数定义,或者 总计 = 这样尚未写完的行。
  • pending… 表示该行需要的数据暂时还不可用。

结果有多精确

精确运算

整数、小数和分数都以精确形式存储。加、减、乘、除以及整数次幂运算都会保持精确,包括 ⅓ 这类无法写成有限小数的分数。用 == 比较时检查的是精确值,不做任何舍入。

calc
0.1 + 0.2 == 0.3 结果为 true
1/3 + 1/3 + 1/3 == 1 结果为 true

平方根在能精确表示时是精确的,否则精确到 38 位有效数字(多余的数字会被截断,而不是舍入)。标准差使用同样的平方根。gcdlcm 是精确的,结果不为负,并且直接作用于分数,不会先进行舍入。

calc
sqrt(2.25) 结果为 1.5
sqrt(1e-64) 结果为 1e-32
gcd(12, 18) 结果为 6

近似结果

有些运算无法精确完成,因此会使用二进制浮点数,其精度只有有限的位数:

  • 三角函数、对数和指数
  • 非整数次幂,例如 2^0.5,以及指数带小数的科学记数法字面量,例如 1e2.5
  • 部分单位换算
  • 解方程、数值导数和积分
  • 矩阵分解和特征值
  • 除基本运算以外的复数函数

由于 == 比较的是精确值,两个近似结果可能看起来一样,却并不相等。请改为用一个很小的容差来比较两者之差:

calc
sqrt(2)^2 结果为 2
sqrt(2)^2 == 2 结果为 false
abs(sqrt(2)^2 - 2) < 0.000000001 结果为 true

请根据数字的大小选择合适的容差。屏幕上显示十位小数,并不能保证这十位小数都正确,对于困难的数值问题尤其如此。

在列表、矩阵和复数中,如果某个部分只是浮点舍入误差,远小于周围的值,就会显示为 0。这样,矩阵分解或 exp(i * pi) 之类的结果会更易于阅读。存储的值仍保留其数字,因此同样适用容差检查:

calc
exp(i * pi) 结果为 -1
abs(exp(i * pi) + 1) < 0.000000001 结果为 true

数字大小

  • 小数存储为一个不超过 2¹²⁸−1(约 38 位数字)的整数,乘以 10⁻¹²⁸ 到 10¹²⁷ 之间的某个 10 的幂。超过 1e127 的数字只要位数放得下,仍然可以使用。
  • 分数的分子和分母各自最多可达 4,096 比特。
  • 把极小的数加到极大的数上可能会丢失极小的部分:1e30 + 0.001 显示为 1e30
  • 乘法或乘方超出范围时,无论结果太大还是太小,都会显示 Error: ∞。计算绝不会溢出回绕成错误的值。
calc
1e30 + 0.001 结果为 1e30
1e100 * 1e100 结果为 Error: ∞

限制

每一行都必须在以下限制之内。达到某项限制时,只有该行会显示错误(通常是 Error: calculation limit),笔记的其余部分照常工作。部分求和或未完成的结果绝不会被当作答案显示。要解决这个问题,请缩小范围、矩阵、嵌套层数或问题的规模。

项目 限制
单行 64 KiB 文本,或 4,096 个数字、单词和符号
列表或 range 1,024 项
矩阵 1 至 32 行、1 至 32 列,所有行长度相同
嵌套列表和内置函数调用 16 层
对范围进行 sumproduct 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 这样的链式比较。有关高等数学功能如何运作的更多信息,请参阅高等数学:功能与限制

综合示例

下面是一个旅行预算,用到了本页的大部分规则:

calc
机票 = £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