53 KiB
Builtin - 数值计算
_and(x, y)
声明:function
与,返回位运算二进制X And 二进制Y
| 参数 | 类型 | 说明 |
|---|---|---|
x |
integer | 整数 |
y |
integer | 整数 |
返回:integer
示例
echo _and(6, 3); // 返回十进制(6=110) and 3=(11) 最后得到二进制10
// 输出:2
_not(x)
声明:function
非,返回位运算Not X,把二进制x全部取反,即非0为1,非1为0
| 参数 | 类型 | 说明 |
|---|---|---|
x |
integer | 整数 |
返回:integer
示例
echo _not (4);
// 输出:-5
// 返回十进制_not (4=00000100) 取非运算最后得到二进制11111011,十进制//是-5,注意:在计算机中,负数以其正值的补码形式表示。补码是烦吗+1,
// 5=00000101,得到反码11111010,得到补码11111011=-5
_or(x, y)
声明:function
或,返回位运算X Or Y
| 参数 | 类型 | 说明 |
|---|---|---|
x |
integer | 整数 |
y |
integer | 整数 |
返回:integer
示例
echo _or (6, 3);
// 输出:7
// 返回十进制(6=110) or 3=(11) 最后得到二进制111,十进制是7
_rol(x, y)
声明:function
循环左移位,返回位运算X Rol Y,二进制X各位左移Y位,原来的高Y位变成低Y位
| 参数 | 类型 | 说明 |
|---|---|---|
x |
integer | 整数 |
y |
integer | 整数 |
返回:integer
示例
echo _rol (36, 3);
// 输出:288
// 返回十进制 (36=100100) 左移3位,最后得到二进制100100000,十进制是//288
_ror(x, y)
声明:function
循环右移位,返回位运算X Ror Y
| 参数 | 类型 | 说明 |
|---|---|---|
x |
integer | 整数 |
y |
integer | 整数 |
返回:integer
示例
echo _ror (36, 2);
// 输出:9
// 返回十进制 (36=100100) 右移2位,最后得到二进制00001001,十进制是9
_shl(x, y)
声明:function
左移位,返回位运算X Shl Y,二进制X左移 Y位
| 参数 | 类型 | 说明 |
|---|---|---|
x |
integer | 整数 |
y |
integer | 整数 |
返回:integer
示例
echo _shl (6, 3);
// 输出:48
// 返回十进制 (6=110) _Shl 3 最后得到二进制110000,十进制是48
_shr(x, y)
声明:function
右移位,返回位运算X Shr Y,二进制X右移 Y位
| 参数 | 类型 | 说明 |
|---|---|---|
x |
integer | 整数 |
y |
integer | 整数 |
返回:integer
示例
echo _shr (36, 3);
// 输出:4
// 返回十进制 (36=100100) _Shr 3最后得到二进制00000100,十进制是4
_xor(x, y)
声明:function
异或,返回位运算X Xor Y
| 参数 | 类型 | 说明 |
|---|---|---|
x |
integer | 整数 |
y |
integer | 整数 |
返回:integer
示例
echo _xor (6, 3);
// 输出:5
// 返回十进制 (6=110) Xor (3=011) 最后得到二进制101,十进制是5
abs(x)
声明:function
返回X的绝对值
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 实数 |
返回:real
示例
// 求-2的绝对值
echo abs(-2);
// 输出:2
arcCos(x)
声明:function
反余弦函数,返回弧度值(介于0和π之间)
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | Cos函数值,实数,定义域范围是[-1,1] |
返回:real
示例
echo arcCos(0);
// 输出:1.5707963267949
arcCosh(x)
声明:function
反双曲余弦函数,计算参数X的反双曲余弦值,是双曲余弦函数Cosh(X)的反函数
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 定义域是[1,+∞), 实数 |
返回:real
示例
// 求ArcCosh(2)
echo arcCosh(2);
// 输出:1.31695789692482
arcCot(x)
声明:function
反余切函数,计算参数X的反余切值
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 余切函数值,实数 |
返回:real
示例
echo arcCot(1);
// 输出:0.785398163397448
arcCoth(x)
声明:function
反双曲余切函数,计算参数X的反双曲余切值,是双曲余切函数CotH(X)的反函数
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 实数 |
返回:real
示例
// 求ArcCotH(4)
echo arcCoth(4);
// 输出:0.255412811882995
arcCsc(x)
声明:function
反余割函数
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 余割函数值,实数 |
返回:real
示例
// 求ArcCsc(2)
echo arcCsc(2);
// 输出:0.523598775598299
arcCsch(x)
声明:function
反双曲余割函数,计算参数X的反双曲余割值,是双曲余割函数Csch (X)的反函数
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 实数 |
返回:real
示例
// 求ArcCscH(4)
echo arcCsch(4);
// 输出:0.247466461547264
arcSec(x)
声明:function
反正割函数
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 正割函数值,实数 |
返回:real
示例
// 求ArcSec(2)
echo arcSec(2);
// 输出:1.0471975511966
arcSech(x)
声明:function
反双曲正割函数,计算参数X的反双曲正割值,是双曲正割函数CecH(X)的反函数
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 实数 |
返回:real
示例
// 求ArcSecH(4)
echo arcSech(0.5);
// 输出:1.31695789692482
arcSin(x)
声明:function
反正弦函数,返回弧度值(介于-π/2和π/2之间)
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | Sin函数值,实数,定义域范围是[-1,1] |
返回:real
示例
echo arcSin(1);
// 输出:1.5707963267949
arcSinh(x)
声明:function
反双曲正弦函数,计算参数X的反双曲正弦值,是双曲正弦函数Sinh(X)的反函数
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 实数 |
返回:real
示例
// 求ArcSinh (2)
echo arcSinh(2);
// 输出:1.44363547517881
arcTan(x)
声明:function
反正切函数,返回值域是[-π,π]
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | Tan函数值,实数 |
返回:real
示例
// 求ArcTan(1)
echo arcTan (1);
// 输出:0.785398163397448 //该值=pi()/4
arcTan2(x, y)
声明:function
反正切函数,求正切值等于Y/X的弧度值,[-π,π]
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 对边长,实数 |
y |
real | 侧边长,实数 |
返回:real
示例
echo arcTan2(1, 2);
// 输出:0.463647609000806
arcTanh(x)
声明:function
反双曲正切函数,计算参数X的反双曲正切值,是双曲正切函数TanH(X)的反函数
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 实数,定义域是[-1,+1] |
返回:real
示例
// 求ArcTanh(0.8)
echo arcTanh(0.8);
// 输出:1.09861228866811
ceil(x)
声明:function
获取不比参数X小的最小整数
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 实数 |
返回:integer
示例
echo ceil(-2.8);
// 输出:-2
ceil32(x)
声明:function
获取比参数X大的最小整数
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 实数 |
返回:integer
示例
echo ceil32(-2.8);
// 输出:-2
ceil64(x)
声明:function
获取比参数X大的最小整数
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 实数 |
返回:int64
示例
echo ceil64(-2.8);
// 输出:-2
compareValue(a, b, epsilon)
声明:function
返回-1,0或1。比较A与B的大小,如果A大于B,返回+1,如果A小于B,返回-1,如果相等,则返回0。参数Epsilon表示一个范围,如果A和B的差距大于这个范围,则进行正常的比较,如果A和B的差距小于这个范围,则认为A等于B
| 参数 | 类型 | 说明 |
|---|---|---|
a |
real | 实数 |
b |
real | 实数 |
epsilon |
real | 误差范围 |
返回:integer
示例
echo compareValue (3, 4, 0.5);
// 输出:-1
// 表示3与4之间的差距超过0.5则正常比较,否则认为相等
complex(a, b)
声明:function
生成复数或复数矩阵,a 为实部,b 为虚部
| 参数 | 类型 | 说明 |
|---|---|---|
a |
real|array|fmarray | 实部 |
b |
real|array|fmarray | 虚部 |
返回:complex|array|fmarray
示例
echo complex(5, -2), "\n";
// 输出:5-2j
conj(z)
声明:function
返回复数的共轭值,支持复数数组
| 参数 | 类型 | 说明 |
|---|---|---|
z |
complex|array|fmarray | 复数或复数数组 |
返回:complex|array|fmarray
示例
value := conj(4 + 3j);
echo real(value), ",", imag(value), "\n";
// 输出:4,-3
cos(x)
声明:function
余弦函数
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 弧度值, 实数 |
返回:real
示例
// 求cos(π/3)
echo cos(pi()/3);
// 输出:0.5
cosecant(x)
声明:function
余割函数,返回参数X的余割值,也就是返回1/Sin(X)的值
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 弧度值,实数 |
返回:real
示例
// 求Cosecant (π/6)
echo cosecant (pi()/6);
// 输出:2
cosh(x)
声明:function
双曲余弦函数,返回参数X的双曲线余弦值,也就是(ex+e-x)/2
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 弧度值,实数 |
返回:real
示例
// 求Cosh(2)
echo cosh(2);
// 输出:3.76219569108363
cot(x)
声明:function
余切函数,也就是返回1/Tan(X)的值
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 弧度值,实数,X≠n*π,(n是整数) |
返回:real
示例
// 求Cot (π/4)
echo cot(pi()/4);
// 输出:1
coTan(x)
声明:function
余切函数,也就是返回1/Tan(X)的值
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 弧度值,实数,X≠n*π,(n是整数) |
返回:real
示例
// 求Cotan(π/4)
echo coTan(pi()/4);
// 输出:1
coth(x)
声明:function
双曲线余切函数,返回参数X的双曲线余切值,也就是(ex+e-x)/(ex-e-x)
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 弧度值,实数 |
返回:real
示例
// 求CotH(2)
echo coth(2);
// 输出:1.03731472072755
csc(x)
声明:function
余割函数,返回参数X的余割值,也就是返回1/Sin(X)的值
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 弧度值,实数 |
返回:real
示例
// 求Csc(π/6)
echo csc(pi()/6);
// 输出:2
csch(x)
声明:function
双曲线余割函数,计算参数X的双曲线余割值,也就是计算2/(ex-e-x)
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 弧度值,实数 |
返回:real
示例
// 求CscH (2)
echo csch(2);
// 输出:0.275720564771783
cycleToDeg(cycles)
声明:function
将圆周值Cycles转化为以角度为度量单位的相应值,也就是计算Cycles*360
| 参数 | 类型 | 说明 |
|---|---|---|
cycles |
real | 圆周值,实数 |
返回:real
示例
// 求CycleToDeg(1/4)
echo cycleToDeg(1/4);
// 输出:90
cycleToGrad(cycles)
声明:function
将圆周值Cycles转化为以梯度为度量单位的相应值,也就是计算Cycles*400
| 参数 | 类型 | 说明 |
|---|---|---|
cycles |
real | 圆周值,实数 |
返回:real
示例
// 求CycleToGrad(1/4)
echo cycleToGrad(1/4);
// 输出:100
cycleToRad(cycles)
声明:function
将圆周值Cycles转化为以弧度为度量单位的相应值,也就是计算Cycles2π
| 参数 | 类型 | 说明 |
|---|---|---|
cycles |
real | 圆周值,实数 |
返回:real
示例
// 求CycleToRad(1/4)
echo cycleToRad(1/4);
// 输出:1.5707963267949
degToCycle(degrees)
声明:function
将角度值Degrees转化为以圆周为度量单位的相应值,也就是计算Degrees*/360
| 参数 | 类型 | 说明 |
|---|---|---|
degrees |
real | 角度值,实数 |
返回:real
示例
// 求DegToCycle(45)
echo degToCycle(45);
// 输出:0.125
degToGrad(degrees)
声明:function
将角度值Degrees转化为以梯度为度量单位的相应值,也就是计算Degrees*100/90(90度角相当于100梯度)
| 参数 | 类型 | 说明 |
|---|---|---|
degrees |
real | 角度值,实数 |
返回:real
示例
// 求DegToGrad (90)
echo degToGrad (90);
// 输出:100
degToRad(degrees)
声明:function
将角度值Degrees转化为以弧度为度量单位的相应值,也就是计算Degrees*π/180
| 参数 | 类型 | 说明 |
|---|---|---|
degrees |
real | 角度值,实数 |
返回:real
示例
// 求DegToRad (60)
echo degToRad(60);
// 输出:1.0471975511966
divMod(dividend, divisor, result, remainder)
声明:function
计算整数除法的整数商和余数。也就是用参数Dividend除以参数Divisor,得到的整数商存到参数Result中,把余数存到参数Remainder中
| 参数 | 类型 | 说明 |
|---|---|---|
dividend |
integer | 整数,被除数 |
divisor |
integer | 整数,除数 |
result |
int64 | 整数,商 |
remainder |
int64 | 整数,余数 |
返回:real
示例
divMod (5, 3, a, b);
echo trim(toStn(array(a, b)));
// 输出:array(1L, 2L)
doubleDecliningBalance(cost, salvage, life, period)
声明:function
返回对一项资产的第Period期的加速折旧值。COST表示资产原值(折旧初始值),Salvage表示资产残值,Life表示折旧年限,Period表示第几期折旧
| 参数 | 类型 | 说明 |
|---|---|---|
cost |
real | 实数,表示资产原值 |
salvage |
real | 实数,表示资产残值 |
life |
integer | 实数,表示折旧年限 |
period |
integer | 实数,表示计算第几期折旧 |
返回:real
示例
cost := 100;
salvage := 32;
life := 3;
period := 2;
echo doubleDecliningBalance(cost, salvage, life, period);
// 输出:1.33333333333334
ensureRange(a_value, amin, amax)
声明:function
这个函数可以保证返回某个区间之内的数,参数Amin和参数Amax是这个区间的上限和下限
| 参数 | 类型 | 说明 |
|---|---|---|
a_value |
real | 要限制范围的实数 |
amin |
real | 实数,范围下限 |
amax |
real | 实数,范围上限 |
返回:real
示例
echo ensureRange (4.3, 4, 8);
// 输出:4.3
exp(x)
声明:function
返回自然对数e的X次方
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 实数 |
返回:real
示例
// 求e^2
echo exp(2);
// 输出:7.38905609893065
floor(x)
声明:function
获取不比参数X大的最大整数
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 实数 |
返回:integer
示例
echo floor(-2.8);
// 输出:-3
floor32(x)
声明:function
获取比参数X小的最大整数。参数
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real |
返回:integer
示例
echo floor32(-2.8);
// 输出:-3
floor64(x)
声明:function
获取比参数X小的最大整数。参数
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real |
返回:int64
示例
echo floor64(-2.8);
// 输出:-3
frac(x)
声明:function
对X取小数部分返回
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 实数 |
返回:real
示例
// 求x
x := 2.45;
echo frac(x);
// 输出:0.45
frexp(x, base, exponent)
声明:function
分离出浮点数存储的尾数和指数
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 实数,浮点数。 |
base |
real | 实数,返回的尾数 |
exponent |
integer | 整数,返回的指数 |
返回:real
示例
// 将X分离出位数和指数,即X= Base *2^ Exponent
x := pi();
frexp(x, base, exponent);
echo trim(toStn(array(base, exponent)));
// 输出:array(0.785398163397448, 2)
futureValue(rate, nperiods, payment, present_value, payment_time)
声明:function
返回一项投资的未来值。这项投资的现值投入是PresentValue,每期投资额是Payment,投资的内部收益率是Rate,投资期数是Nperiods,而参数PaymentTime决定每期的Payment投资是在期初或期末进行
| 参数 | 类型 | 说明 |
|---|---|---|
rate |
real | 实数,表示内部收益率 |
nperiods |
integer | 整数,表示投资的总期数 |
payment |
real | 实数,表示投资期内,每期投入值 |
present_value |
real | 实数,初期投入的现值 |
payment_time |
integer | PaymentTime决定每期的Payment投资是在期初或期末进行 |
返回:real
示例
rate := 0.05;
nperiods := 5;
payment := 100;
present_value := -10000;
payment_time := 1;
echo futureValue(rate, nperiods, payment, present_value, payment_time);
// 输出:12182.62434375
gradToCycle(grads)
声明:function
将梯度值Grads转化为以圆周为度量单位的相应值,也就是计算Grads/400
| 参数 | 类型 | 说明 |
|---|---|---|
grads |
real | 梯度值,实数 |
返回:real
示例
// 求GradToCycle(100)
echo gradToCycle(100);
// 输出:0.25
gradToDeg(grads)
声明:function
将梯度值Grads转化为以角度为度量单位的相应值,也就是计算Grads*90/100
| 参数 | 类型 | 说明 |
|---|---|---|
grads |
real | 梯度值,实数 |
返回:real
示例
// 求GradToDeg(50)
echo gradToDeg(50);
// 输出:45
gradToRad(grads)
声明:function
将梯度值Grads转化为以弧度为度量单位的相应值,也就是计算Grads*π/200
| 参数 | 类型 | 说明 |
|---|---|---|
grads |
real | 梯度值,实数 |
返回:real
示例
// 求GradToRad(50)
echo gradToRad(50);
// 输出:0.785398163397448
hypot(x, y)
声明:function
根据直角三角形的两条直角边返回斜边长度
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 一条直角边长度,实数 |
y |
real | 另一条直角边长度,实数 |
返回:real
示例
// 求Hypot (3,4)
echo hypot (3, 4); // 返回sqrt(3^2+4^2)
// 输出:5
imag(z)
声明:function
返回复数的虚部,实数的虚部为 0,支持复数数组
| 参数 | 类型 | 说明 |
|---|---|---|
z |
complex|array|fmarray | 复数或复数数组 |
返回:real|array|fmarray
示例
echo imag(4 + 3j), "\n";
// 输出:3
inRange(a_value, amin, amax)
声明:function
判断Avalue是否在[Amin, Amax]范围内
| 参数 | 类型 | 说明 |
|---|---|---|
a_value |
real | 要判断的实数 |
amin |
real | 实数,范围下限 |
amax |
real | 实数,范围上限 |
返回:bool
示例
echo inRange (4.3, 4, 8);
// 输出:1
int(x)
声明:function
对X取整数部分,去掉小数部分,得到的还是实数
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 实数 |
返回:real
示例
// 求x
x := 2.45;
echo int(x);
// 输出:2
interestPayment(rate, period, nperiods, present_value, future_value, payment_time)
声明:function
返回一项贷款的第Periods期的还款的利息额部分。这项贷款的现值是PresentValue,投资所产生的终值是FutureValue,而参数PaymentTime决定每期的利息投资是在期初或期末进行
| 参数 | 类型 | 说明 |
|---|---|---|
rate |
real | 实数,表示贷款利率 |
period |
integer | 整数,第几期还款 |
nperiods |
integer | 整数,表示还款的总期数 |
present_value |
real | 实数,表示贷款总额 |
future_value |
real | 实数,表示投资的未来值 |
payment_time |
integer | PaymentTime决定每期的Payment投资是在期初或期末进行 |
返回:real
示例
rate := 0.1;
period := 5;
nperiods := 12;
present_value := 120;
future_value := 500;
payment_time := 0;
echo interestPayment(rate, period, nperiods, present_value, future_value, payment_time);
// 输出:1.45576981358686
interestRate(nperiods, payment, present_value, future_value, payment_time)
声明:function
计算使投资现值按指定现金流和期数达到终值所需的每期收益率
| 参数 | 类型 | 说明 |
|---|---|---|
nperiods |
integer | 总期数 |
payment |
real | 每期现金流 |
present_value |
real | 现值 |
future_value |
real | 终值 |
payment_time |
integer | 0 表示期末支付,1 表示期初支付 |
返回:real
示例
echo interestRate(1, 0, -100, 110, 0);
// 输出:0.1
internalRateOfReturn(guess, cash_flows)
声明:function
返回内部回报率,根据一个项目完整的现金流情况得出,函数假设这些现金流的发生是规则、持续的,它们之间的时间间隔必须相等,例如每年年末。同时,现金流入用正值表示,现金流出用负值表示。第一个数据必须为负,以表示初始投资
| 参数 | 类型 | 说明 |
|---|---|---|
guess |
real | 实数,评估的收益率 |
cash_flows |
array of real | 实数数组,现金流 |
返回:real
示例
guess := 0.1;
data := array(-1000, 600, 600);
echo internalRateOfReturn(guess, data);
// 输出:0.130662386291807
intpower(base, exponent)
声明:function
计算Base的Exponent次幂,也就是计算BaseExponent
| 参数 | 类型 | 说明 |
|---|---|---|
base |
real | 底数,实数 |
exponent |
real | 指数,整数,如果不是整数则会进行取整 |
返回:real
示例
echo intPower (2, 3.2);
// 输出:8 //返回2^3
isInfinite(a_value)
声明:function
返回布尔型真假值,确定指定的参数AValue是否是一个正或负的无穷大的数
| 参数 | 类型 | 说明 |
|---|---|---|
a_value |
any | 任意数据 |
返回:bool
示例
范例01:判断单个值是否inf
echo isInfinite (inf);
// 输出:1
范例02:判断数组中各元素是否nan
data := array(2, nan, 3, '', 's', nil, inf);
echo trim(toStn(isInfinite(data)));
// 输出:array(0, 0, 0, 0, 0, 0, 1)
isNan(a_value)
声明:function
返回布尔型真假值,确定指定的参数AValue是否是一个NAN数
| 参数 | 类型 | 说明 |
|---|---|---|
a_value |
any | 任意数据 |
返回:bool
示例
范例01:判断单个值是否nan
v := nan;
echo isNan(v);
// 输出:1
范例02:判断数组中各元素是否nan
data := array(2, nan, 3, '', 's', nil);
echo trim(toStn(isNan(data)));
// 输出:array(0, 1, 0, 0, 0, 0)
isZero(a, epsilon)
声明:function
返回布尔真假值。返回A是否在(0-Epsilon,0+ Epsilon)范围内
| 参数 | 类型 | 说明 |
|---|---|---|
a |
real | 实数,需要进行判断的数据 |
epsilon |
real | 与0的差距范围,实数 |
返回:bool
示例
a := 1.400000000001;
b := 1.399999999999;
echo isZero(a-b, 0.000000001); // 在9位小数的精度下
// 输出:1
ldexp(x, p)
声明:function
返回X*(2p)
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 实数,作底 |
p |
integer | 整数,作为指数 |
返回:real
示例
echo ldexp(3, 2);
// 输出:12 //返回3*2^2
ln(x)
声明:function
返回X的自然对数,是Exp函数的反函数
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 实数,大于0 |
返回:real
示例
// 求ln(e^2)
echo ln(7.38905609893065);
// 输出:2
lnXp1(x)
声明:function
返回(X+1)的自然对数,也就是Ln(X+1)
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 可以是实数,大于-1 |
返回:real
示例
echo lnXp1(3);
// 输出:1.38629436111989
log10(x)
声明:function
返回X以10为底的自然对数,也就是log10X
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 实数,大于0 |
返回:real
示例
echo log10(100);
// 输出:2 //返回log10100
log2(x)
声明:function
返回X以2为底的自然对数,也就是log2X
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 实数,大于0 |
返回:real
示例
echo log2(8);
// 输出:3 //返回log28
logN(base, x)
声明:function
返回X以Base为底的自然对数,也就是logbaseX
| 参数 | 类型 | 说明 |
|---|---|---|
base |
real | 底数,实数 |
x |
real | 实数,大于0 |
返回:real
示例
echo logN(2, 8);
// 输出:3 //返回log28
max(a, b)
声明:function
返回A、B中的较大值,如果A、B是数组,需保证两个参数的数据维度相同,一一比较对应位置的两个数字,返回较大的值
| 参数 | 类型 | 说明 |
|---|---|---|
a |
real|array | 实数/数组 |
b |
real|array | 实数/数组 |
返回:real|array
示例
范例01:比较两个值
echo max(5, 5.6);
// 输出:5.6
范例02:比较两个数组
echo trim(toStn(max(array(1, 2, 8), array(4, 5, 6))));
// 输出:array(4, 5, 8)
min(a, b)
声明:function
返回A、B中的较小值,如果A、B是数组,需保证两个参数的数据维度相同,一一比较对应位置的两个数字,返回较小的值
| 参数 | 类型 | 说明 |
|---|---|---|
a |
real|array | 实数 |
b |
real|array | 实数 |
返回:real|array
示例
范例01:比较两个值
echo min(3, 3.6);
// 输出:3
范例02:比较两个数组
a := array(1, 3, 5);
b := array(2, 3, 4);
echo trim(toStn(min(a, b)));
// 输出:array(1, 3, 4)
netPresentValue(rate, cash_flows, payment_time)
声明:function
返回净现值。就是根据CashFlows未来现金流的状况,以Rate利率折线的数值。PaymentTime决定CashFlow的是在期初还是期末发生
| 参数 | 类型 | 说明 |
|---|---|---|
rate |
real | 实数,利率 |
cash_flows |
array of real | 实数数组名,现金流 |
payment_time |
integer | 决定CashFlow的是在期初还是期末发生 |
返回:real
示例
rate := 0.1;
cash_flows := Array(100, 1000);
payment_time := 0;
echo netPresentValue(rate, cash_flows, payment_time);
// 输出:917.355371900826
numberOfPeriods(rate, payment, present_value, future_value, payment_time)
声明:function
计算现值按指定收益率和每期现金流达到终值所需的期数
| 参数 | 类型 | 说明 |
|---|---|---|
rate |
real | 每期收益率 |
payment |
real | 每期现金流 |
present_value |
real | 现值 |
future_value |
real | 终值 |
payment_time |
integer | 0 表示期末支付,1 表示期初支付 |
返回:real
示例
echo numberOfPeriods(0.1, 0, -100, 121, 0);
// 输出:2
odd(x)
声明:function
判断X是否是奇数,如果是,返回真,否则返回假
| 参数 | 类型 | 说明 |
|---|---|---|
x |
integer | 整数,如果是实数,先取整数部分 |
返回:bool
示例
// 判断1是否是奇数
echo odd (1);
// 输出:1
payment(rate, nperiods, present_value, future_value, payment_time)
声明:function
返回贷款每期还款数。贷款数为PresentValue,贷款利率是Rate,NPeriods表示还款的总期数。这个函数假定利息是在每个期末支付。FutureValue表示投资到还款结束起达到的程度,PaymentTime决定每期的还款是在期初还是期末发生
| 参数 | 类型 | 说明 |
|---|---|---|
rate |
real | 实数,贷款利率 |
nperiods |
integer | 整数,表示还款的总期数 |
present_value |
real | 实数,表示贷款总额 |
future_value |
real | 表示投资到还款结束起达到的程度 |
payment_time |
integer | 决定CashFlow的是在期初还是期末发生 |
返回:real
示例
rate := 0.1;
nperiods := 100;
present_value := 0;
future_value := 10000;
payment_time := 0;
echo payment(rate, nperiods, present_value, future_value, payment_time);
// 输出:-0.0725709820667488
periodPayment(rate, period, nperiods, present_value, future_value, payment_time)
声明:function
返回贷款每期还款本金的部分。类似地,InterestPayment函数是返回贷款每期还款利息的部分
| 参数 | 类型 | 说明 |
|---|---|---|
rate |
real | 实数,贷款利率 |
period |
integer | 整数,第几期还款 |
nperiods |
integer | 整数,表示还款的总期数 |
present_value |
real | 实数,表示贷款总额 |
future_value |
real | 表示投资到还款结束起达到的程度 |
payment_time |
integer | 决定现金流是在期初还是期末发生 |
返回:real
示例
rate := 0.1;
period := 10;
nperiods := 30;
present_value := 0;
future_value := 10000;
payment_time := 0;
echo periodPayment(rate, period, nperiods, present_value, future_value, payment_time);
// 输出:-143.345493803139
pi()
声明:function
圆周率,返回3.1415926535897932385
返回:real
示例
// 求面积(π*R^2)
r := 2;
echo pi() * r^2;
// 输出:12.5663706143592
poly(x, coefficients)
声明:function
计算以下多项式的值,其中参数Coefficients必须是数组类型,存放参数X的各次幂的系数。公式是
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 实数 |
coefficients |
array of real | 多项式数组,一维数组 |
返回:real
示例
x := 2;
a := array(2, 3, 1, 5);
echo poly(x, a);
// 输出:52
// 返回2*(2^0)+3*(2^1)+1*(2^2)+ 5*(2^3)
power(base, exponent)
声明:function
计算Base的Exponent次幂,也就是计算BaseExponent,由于指数也是实数,计算速度要低于IntPower()函数
| 参数 | 类型 | 说明 |
|---|---|---|
base |
real | 底数,实数 |
exponent |
real | 指数,实数,非整数时,参数Base必须大于0 |
返回:real
示例
echo power (2, 3.2);
// 输出:9.18958683997628
presentValue(rate, nperiods, payment, future_value, payment_time)
声明:function
返回现值,这部分现值由两部分组成,一部分是每期的固定的现金流入,一部分是最终的一笔现金流入。例如购买每年付息的债券就可以用这个函数来计算现值
| 参数 | 类型 | 说明 |
|---|---|---|
rate |
real | 实数,要求利率 |
nperiods |
integer | 整数,表示现金流入的总期数 |
payment |
real | 实数,表示每期的现金流入额 |
future_value |
real | 实数,表示结束时现金流入 |
payment_time |
integer | 决定现金流是在期初还是期末发生 |
返回:real
示例
rate := 0.1;
nperiods := 30;
future_value := 10000;
payment_time := 0;
echo presentValue(rate, nperiods, payment, future_value, payment_time);
// 输出:-573.08553301168
radToCycle(radians)
声明:function
将弧度值Radians转化为以圆周为度量单位的相应值,也就是计算Radians*/2π(2π是一个圆周)
| 参数 | 类型 | 说明 |
|---|---|---|
radians |
real | 弧度值,实数 |
返回:real
示例
// 求RadToCycle (π/4)
echo radToCycle(pi()/4);
// 输出:0.125
radToDeg(radians)
声明:function
将弧度值Radians转化为以角度为度量单位的相应值,也就是计算Radians*180/π
| 参数 | 类型 | 说明 |
|---|---|---|
radians |
real | 弧度值,实数 |
返回:real
示例
// 求RadToDeg (π/3)
echo radToDeg(pi()/3);
// 输出:60
radToGrad(radians)
声明:function
将弧度值Radians转化为以梯度为度量单位的相应值,也就是计算Radians*200/π
| 参数 | 类型 | 说明 |
|---|---|---|
radians |
real | 弧度值,实数 |
返回:real
示例
// 求RadToGrad (π/4)
echo radToGrad(pi()/4);
// 输出:50
randomRange(a_from, a_to)
声明:function
返回一个介于参数AFrom(包括)和参数ATo(不包括)之间的随机整数
| 参数 | 类型 | 说明 |
|---|---|---|
a_from |
integer | 整数 |
a_to |
integer | 整数 |
返回:integer
示例
echo randomRange(4, 9);
// 输出:4 到 8 之间的随机整数
round(x)
声明:function
使用银行家算法四舍五入,"四舍六入五考虑,五后非零就进一,五后皆零看奇偶,五前为偶应舍去,五前为奇要进一"。输出整数
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 实数 |
返回:integer
示例
// 求x
x := 3.5;
echo round(x);
// 输出:4
round32(x)
声明:function
对X做取整运算,近似到最接近的整数
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 实数 |
返回:integer
示例
x := round32(6.8);
echo x;
// 输出:7
round64(x)
声明:function
对X做取整运算,近似到最接近的整数。采用银行家舍入原则,"四舍六入五考虑,五后非零就进一,五后皆零看奇偶,五前为偶应舍去,五前为奇要进一"
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 实数 |
返回:int64
示例
x := round64(3.5);
echo x;
// 输出:4
roundTo(a_value, a_digit)
声明:function
使用银行家算法对AValue进行四舍五入,精确到10Adigit位。"四舍六入五考虑,五后非零就进一,五后皆零看奇偶,五前为偶应舍去,五前为奇要进一"
| 参数 | 类型 | 说明 |
|---|---|---|
a_value |
real | 实数 |
a_digit |
integer | 整数,范围为[-37,37] |
返回:real
示例
范例01:整数四舍五入
echo roundTo(1234567.3, 4);
// 输出:1230000
范例02:小数部分四舍五入
echo roundTo(1.234567, -3);
// 输出:1.235
sameValue(a, b, epsilon)
声明:function
返回A与B是否近似相等。两者的差距是否小于Epsilon参数定义的范围
| 参数 | 类型 | 说明 |
|---|---|---|
a |
real | 实数 |
b |
real | 实数 |
epsilon |
real | 表示一个两者差距的最大范围 |
返回:bool
示例
echo sameValue (3, 4, 0.5);
// 输出:0
// 表示3与4之间的差距在0.5之内认为相等,否则认为不相等
sec(x)
声明:function
正割函数,返回参数X的正割值,也就是返回1/Cos(X)的值
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 弧度值,实数 |
返回:real
示例
// 求Sec(π/3)
echo sec(pi()/3);
// 输出:2
secant(x)
声明:function
正割函数,返回参数X的正割值,也就是返回1/Cos(X)的值
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 弧度值,实数 |
返回:real
示例
// 求Secant (π/6)
echo secant(pi()/3);
// 输出:2
sech(x)
声明:function
双曲线正割函数,计算参数X的双曲线正割值,也就是计算2/(ex+e-x)
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 弧度值,实数 |
返回:real
示例
// 求SecH(2)
echo sech(2);
// 输出:0.26580222883408
sign(a_value)
声明:function
Sign函数,判断参数AValue的符号。如果为正,返回+1,如果为负数,返回-1,如果为0,则返回0
| 参数 | 类型 | 说明 |
|---|---|---|
a_value |
real | 实数 |
返回:integer
示例
echo sign (-2);
// 输出:-1
simpleRound(x)
声明:function
与Round函数相比,SimpleRound采用了正负数不对称的算法,当一个负数正好是进位的一半时,它向较大的数进位。输出为整数类型
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 实数 |
返回:integer
示例
// 求x
x := 3.5;
echo simpleRound(x);
// 输出:4
simpleRound32(x)
声明:function
对X做取整运算,近似到最接近的整数。采用四舍五入原则,即尾数是五就进一
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 实数 |
返回:integer
示例
x := simpleRound32(6.8);
echo x;
// 输出:7
simpleRound64(x)
声明:function
对X做取整运算,近似到最接近的整数。采用四舍五入原则,即尾数是五就进一
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 实数 |
返回:int64
示例
x := simpleRound64(3.5);
echo x;
// 输出:4
simpleRoundTo(a_value, a_digit)
声明:function
返回参数AValue四舍五入后的值。四舍五入的位置由参数Adigit决定,尾数是五就进一
| 参数 | 类型 | 说明 |
|---|---|---|
a_value |
real | 实数 |
a_digit |
integer | 整数,范围为[-37,37] |
返回:real
示例
范例01:
echo simpleRoundTo(1234567.3, 4);
// 输出:1230000
范例02:
echo simpleRoundTo(-1.235, -2);
// 输出:-1.24
sin(x)
声明:function
正弦函数
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 弧度值,实数 |
返回:real
示例
// 求sin(π/6)
echo sin(pi()/6);
// 输出:0.5
sinCos(x, sin, cos)
声明:function
计算X的正弦和余弦值,分别返回到参数Sin和Cos中
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 弧度值, 实数 |
sin |
正弦计算结果存放于该参数 | |
cos |
real | 余弦计算结果存放于该参数 |
返回:integer
示例
sinCos(pi()/2, sin, cos);
echo trim(toStn(array(sin, cos)));
// 输出:array(1.0, 6.12323399573677E-17)
sinh(x)
声明:function
双曲线正弦函数,返回参数X的双曲线正弦值,也就是(ex-e-x)/2
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 弧度值,实数 |
返回:real
示例
// 求Sinh (2)
echo sinh(2);
// 输出:3.62686040784702
slnDepreciation(cost, salvage, life)
声明:function
按直线折旧法计算每期折旧额,计算公式为(资产原值 Cost - 资产残值 Salvage)/ 折旧周期数 Life
| 参数 | 类型 | 说明 |
|---|---|---|
cost |
real | 实数,资产原值 |
salvage |
real | 实数,资产残值 |
life |
integer | 整数,设备的使用期数 |
返回:real
示例
echo slnDepreciation(20000, 2000, 5);
// 输出:3600
// 第一年应提折旧额=(20000-2000)/5=3600
// 第二年应提折旧额=(20000-2000)/5=3600
// 第三年应提折旧额=(20000-2000)/5=3600
// 第四年应提折旧额=(20000-2000)/5=3600
// 第五年应提折旧额=(20000-2000)/5=3600
sqr(x)
声明:function
返回X的平方
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 实数 |
返回:real
示例
// 求x^2
x := 2;
echo sqr(x);
// 输出:4
sqrt(x)
声明:function
返回X的平方根(该函数支持对数组操作)。可以对一维数组和二维数组里面的数据开平方,如果数组中含有字符,函数将报错
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 实数 |
返回:real
示例
范例01:计算实数的平方根
x := 4;
echo sqrt(x);
// 输出:2
范例02:计算一维数组中所有元素的平方根
x := array(4, 9, 16, 25);
echo trim(toStn(sqrt(x)));
// 输出:array(2.0,3.0,4.0,5.0)
sydDepreciation(cost, salvage, life, period)
声明:function
根据"sum-of-years-digits depreciation"方法计算某期的折旧额。这是一种加速折旧方法,在早一些的年份折旧速度快于晚一些的年份。计算方法是:(Cost-Salvage)*Period/[(1+Life)* Life/2]
| 参数 | 类型 | 说明 |
|---|---|---|
cost |
real | 实数,资产原值 |
salvage |
real | 实数,资产残值 |
life |
integer | 整数,设备的使用期数 |
period |
integer | 整数,指出计算第几期的折旧额 |
返回:real
示例
echo sydDepreciation(20000, 2000, 5, 2);
// 输出:4800
// 第一年应提折旧额=(20000-2000)*5/((1+5)*5/2)=6000
// 第二年应提折旧额=(20000-2000) *4/((1+5)*5/2)=4800
// 第三年应提折旧额=(20000-2000) *3/((1+5)*5/2)=3600
// 第四年应提折旧额=(20000-2000) *2/((1+5)*5/2)=2400
// 第五年应提折旧额=(20000-2000) *1/((1+5)*5/2)=1200
// 输出:2400
tan(x)
声明:function
正切函数
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 弧度值,实数,X≠n*π+π/2,(n是整数) |
返回:real
示例
// 求tan(π/4)
echo tan (pi()/4);
// 输出:1
tanh(x)
声明:function
双曲线正切函数,返回参数X的双曲线正切值,也就是(ex-e-x)/(ex+e-x)
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 弧度值,实数 |
返回:real
示例
// 求Tanh(2)
echo tanh(2);
// 输出:0.964027580075817
trunc(x)
声明:function
对X做取整运算,近似到最接近0的整数
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 实数 |
返回:integer
示例
x := trunc(-6.8);
echo x;
// 输出:-6
trunc32(x)
声明:function
对X做取整运算,近似到最接近0的整数
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 实数 |
返回:integer
示例
x := trunc32(-6.8);
echo x;
// 输出:-6
trunc64(x)
声明:function
对X做取整运算,近似到最接近0的整数
| 参数 | 类型 | 说明 |
|---|---|---|
x |
real | 实数 |
返回:int64
示例
x := trunc64(6.8);
echo x;
// 输出:6