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

内置函数参考

本页列出 Varlig Calc 内置的所有函数。调用函数时写出函数名,并在括号中填入参数,参数之间用逗号分隔:sqrt(16)round(17.46, 0.05)

  • 函数名不区分大小写,因此 SQRT(16) 也可以使用。
  • 参数个数会被检查。sqrt(4, 9) 会显示错误,而不会忽略 9。
  • 数字可以保留千位分隔符。逗号后面紧跟三位数字时用于千位分组,逗号后面跟空格时用于分隔参数,所以 max(1,000, 2,000) 是 2,000,sqrt(1,024) 是 32。
  • 可以在同一行中对函数的结果进行舍入或换算,例如 sqrt(2) to 4 dpabs(-5 km) in m
  • 在下表中找到函数名,再查看对应小节了解详情和示例。

许多函数还有对应的英文短语,例如 square root of 16;请参阅文字数学。要编写自己的函数,请参阅自定义函数

所有函数

函数 含义
abs(x) 绝对值;保留单位;对复数给出模
sign(x) −1、0 或 1
int(x), trunc(x) 整数部分,向零取整
round(x), round(x, step) 最接近的整数,或最接近的 step 倍数
floor(x), floor(x, step) 向下舍入,朝负无穷方向
ceil(x), ceil(x, step) 向上舍入,朝正无穷方向
sqrt(x), cbrt(x) 平方根和立方根;单位的幂次能被整除时保留单位
exp(x), ln(x) 自然指数和自然对数
log(x), log10(x), log2(x), logbase(x, b) 对数
sin, cos, tan 三角函数,参数为弧度,或 30° 这样的角度
sind, cosd, tand 以度为单位的三角函数
asin, acos, atan 反三角函数,结果为弧度
asind, acosd, atand 反三角函数,结果为度
atan2(y, x) 考虑象限的角度,单位为弧度
sinh, cosh, tanh, asinh, acosh, atanh 双曲函数
factorial(n), fact(n) 阶乘;也可写作 n!
gcd(a, b), lcm(a, b) 最大公约数和最小公倍数;精确计算,也适用于分数
combination(n, k), permutation(n, k) 选取方式的数目
clamp(x, low, high) 将值限制在上下限之内
hex(n), bin(n) 以十六进制或二进制显示数字
random(), rand(), random(a, b), rand(a, b) 随机数
complex(re, im), real, imag, conj, arg 复数
sum, total, product, average, mean, avg, median, min, max, count, length, variance, stddev, stdev 列表的总计和统计量(其中几个也接受分开的多个参数)
sum(expr, var, lo, hi), summation(...), product(expr, var, lo, hi) 随计数变量求和或求积
range(a, b), range(a, b, step) 数字列表,包含两端
sort, reverse, unique, slice(list, start, end) 重新排列列表,或从中选取
map(expr, var, list), filter(cond, var, list) 对列表的每一项求值或进行判断
dot, cross, identity(n), shape, transpose, det, inverse, trace, rank 向量与矩阵
solve_system(A, b), eigenvalues, qr, lu, svd 线性方程组与矩阵分解
solve(equation, var, lo, hi) 在两个边界之间以数值方式求解方程
differentiate(expr, var), derivative(expr, var) 以公式形式给出导数
differentiate(expr, var, point), derivative(expr, var, point) 某一点处的导数,结果为数字
integrate(expr, var, lo, hi) 定积分,以数值方式计算
easter(year) 西方教会的复活节(星期日)
tyre_speed(width, aspect, rim, rotation) 根据轮胎规格和车轮转速计算行驶速度

数字与计数

函数 参数与含义
abs(x) 绝对值;保留量的单位;对复数给出模
sign(x) 普通实数的符号:-1、0 或 1
int(x), trunc(x) 整数部分,向零取整
sqrt(x) 平方根;要求负数的复数根,请写成 sqrt(-16 + 0i)
cbrt(x) 立方根,负数也可以
factorial(n), fact(n) 0 或更大的整数的阶乘;也可写作 n!
gcd(a, b) 两个精确数的最大公约数,结果不为负
lcm(a, b) 两个精确数的最小公倍数,结果不为负
clamp(x, low, high) 将值限制在 lowhigh 之间,三者须为同一类量;下限在前
permutation(n, k) n 项中选取 k 项的有序排列数
combination(n, k) n 项中选取 k 项的无序组合数
hex(x), bin(x) 以十六进制或二进制显示数字
calc
abs(-£45.20) 结果为 £45.20
sign(-5) 结果为 -1
int(7.8) 结果为 7
sqrt(144 m^2) 结果为 12 m
cbrt(-27) 结果为 -3
factorial(5) 结果为 120
gcd(1920, 1080) 结果为 120
lcm(4, 6) 结果为 12
clamp(115, 0, 100) 结果为 100
clamp(£120, £0, £100) 结果为 £100.00
combination(10, 2) 结果为 45
permutation(8, 3) 结果为 336
hex(255) 结果为 0xFF
bin(10) 结果为 0b1010

几个日常用法:gcd(1920, 1080) 说明 1920 × 1080 的屏幕是 16:9(1920 ÷ 120 比 1080 ÷ 120)。combination(10, 2) 是十个人中能组成的不同两人组的数量,permutation(8, 3) 则是八名选手分得金、银、铜牌的排法数量。

当值和两个限值衡量的是同一类量时,clamp 会保留金额、数量和时长的单位,因此 clamp(£120, £0, £100) 会把退款上限定为 £100.00。计算阶乘和选取方式数时,请使用整数,并且 k 不能大于 n5!factorial(5) 的简写。要求其他次方根,请使用短语 root 3 of 27;没有通用的 root(...) 函数。

舍入

roundfloorceil 可以带一个可选的步长,舍入到该步长的倍数:

calc
round(17.46, 0.05) 结果为 17.45
ceil(23, 6) 结果为 24
floor(7.8) 结果为 7

ceil(23, 6) 会把 23 个鸡蛋向上取整为整盒,每盒 6 个。步长不是小数位数:round(17.456, 2) 会舍入到最接近的 2 的倍数,得到 18,而 round 上的提示会建议改写成 17.456 to 2 dp。要按有效数字舍入,请写 to 3 sf。有关恰好一半时的舍入、负数和金额,请参阅舍入

三角函数与角度

函数族 含义
sin, cos, tan 三角函数;普通数字按弧度计算
sind, cosd, tand 普通数字按度计算的三角函数
asin, acos, atan 反三角函数;结果带弧度单位
asind, acosd, atand 反三角函数,返回度
atan2(y, x) 考虑象限的角度,结果为表示弧度的普通数字
sinh, cosh, tanh 双曲函数
asinh, acosh, atanh 反双曲函数
calc
sin(30°) 结果为 0.5
cosd(60) 结果为 0.5
tan(45°) 结果为 1
sin(pi/2) 结果为 1
asind(0.5) 结果为 30°
asin(1) 结果为 1.5707963268 rad
asin(0.5) in degrees 结果为 30°
atan2(-1, -1) * 180 / pi 结果为 -135
cosh(0) 结果为 1

sincostan 接受任何角度单位表示的角度,例如 30°30 degrees。要以度为单位查看 asinacosatan 的结果,请像上面那样加上 in degrees,或者使用度数形式的函数。

atan2 先接受 y 值,并判断角度位于哪个象限,因此 atan2(-1, -1) 指向左下方(−135°),而单独使用 atan(1) 无法区分这一点。

双曲函数接受普通数字。反函数只接受其实数范围内的值;例如,asin(2) 会显示 Error: imaginary number。要得到复数结果,请参阅复数

对数与指数

函数 含义
ln(x) 自然对数
log(x), log10(x) 以 10 为底的对数
log2(x) 以 2 为底的对数
logbase(x, b) b 为底 x 的对数
exp(x) 自然指数
calc
log(1000) 结果为 3
log10(1000000) 结果为 6
log2(1024) 结果为 10
logbase(81, 3) 结果为 4
ln(exp(2)) 结果为 2
exp(0) 结果为 1

对数需要正数:log(0) 会显示 Error: ∞log(-100) 会显示 Error: imaginary number。要计算复数对数,请把数字写成复数形式,例如 ln(-1 + 0i)。底数必须为正数,且不能为 1。对数、指数和双曲函数不接受单位或金额。

随机值

calc结果取决于今天的日期或实时数据
random number between 1 and 6 结果为 4
random(1, 6) 结果为 2
rand(1, 100) 结果为 57
random() 结果为 0.4381930527
rand() 结果为 0.9102746385
random(0, 1) 结果为 0.2373052626
  • random(a, b) 和短语 random number between a and b 会给出从 ab 的整数,包含两端。
  • random() 会给出一个大于或等于 0、小于 1 的小数。random(0, 1) 是一个特例,作用相同。
  • randrandom 的另一个名称。
  • 边界必须是普通整数,小的在前,且在 64 位整数范围内。只给一个参数、给出两个以上参数、使用小数或边界顺序颠倒都会显示错误。
  • 笔记每次重新计算时,Varlig 都可能抽取新的数字。如果后面的行需要使用同一个数字,请把抽取结果存入变量,例如 点数 = random(1, 6)

列表与统计

calc
average([12, 18, 9, 21]) 结果为 15
median([3, 9, 4, 7, 5]) 结果为 5
sum([£12.50, £8, £4.25]) 结果为 £24.75
max(4, 9, 2) 结果为 9
stddev([2, 4, 6]) 结果为 2
sum(k, k, 1, 100) 结果为 5,050
range(0, 20, 5) 结果为 [0, 5, 10, 15, 20]
sort([3, 1, 2]) 结果为 [1, 2, 3]
slice([10, 20, 30, 40], 1, 3) 结果为 [20, 30]
map(x * 1.2, x, [£10, £25]) 结果为 [£12.00, £30.00]
filter(x > 10, x, [4, 12, 18]) 结果为 [12, 18]

sum(也可写作 total)、productaverage(也可写作 meanavg)、medianminmaxcountlengthvariancestddev(也可写作 stdev)作用于列表,其中几个也接受分开的多个参数。没有百分位数函数。带四个参数的 sumsummationproduct 会让计数变量从 lo 取到 hi,并对表达式求和或求积。reverseunique 也接受列表。有关 slice 中的位置、样本统计量与总体统计量等更多内容,请参阅列表与统计

向量、矩阵与微积分

calc
dot([1, 2, 3], [4, 5, 6]) 结果为 32
det([[2, 1], [1, 3]]) 结果为 5
solve_system([[1, 1], [1, -1]], [10, 2]) 结果为 [6, 4]
solve(x * 1.2 = 60, x, 0, 100) 结果为 50
differentiate(x^2, x, 3) 结果为 6
integrate(x^2, x, 0, 3) 结果为 9

solve_system([[1, 1], [1, -1]], [10, 2]) 求出和为 10、差为 2 的两个数。solve(x * 1.2 = 60, x, 0, 100) 在 0 到 100 之间搜索,求出加上 20% 增值税后为 60 的税前价格。有关 crossidentityshapetransposeinversetracerankeigenvaluesqrlusvd,请参阅向量与矩阵。有关以公式形式给出的导数,以及求解器和积分器的限制,请参阅求和、解方程与微积分高等数学:功能与限制

复数

calc
abs(3 + 4i) 结果为 5
complex(3, 4) 结果为 3 + 4i
conj(3 + 4i) 结果为 3 - 4i
real(3 + 4i) 结果为 3
imag(3 + 4i) 结果为 4

arg(z) 以弧度给出复数的辐角。请参阅复数

日期与车辆

calc
easter(2030) 结果为 April 21, 2030
tyre_speed(205, 55, 16, 1000 rpm) in km/h 结果为 119.1103438682 km/h

easter(year) 给出某一年西方教会的复活节(星期日),与短语 Easter 2030 得到的日期相同。可以直接从这个日期开始加减天数,例如 easter(2030) + 1 day。请参阅日期与日历tyre_speed 依次接受以毫米为单位的轮胎宽度、以百分比表示的扁平比、以英寸为单位的轮辋尺寸,以及车轮的转速;请参阅烹饪、声音、屏幕与机械