算术函数
- 除
MOD
,RND
和TRUNC
以外的所有算术函数都具有单个自变量;MOD
有两个自变量,RND
和TRUNC
有一个到三个自变量。 多个自变量必须以逗号分隔。 - 自变量可以是数字表达式,如
RND(A**2/B)
中所示。
ABS。 ABS(numexpr)。 数值。 返回 numexpr 的绝对值,必须为数值。
RND。 RND(numexpr[,mult,fuzzbits])。 数值。 使用单个参数,返回最接近该参数的整数。 以 .5 结尾的数字正被四舍五入为 0。 例如,RND(-4.5) 舍入到 -5。 可选第二参数 mult 指定结果是此值的整数倍,例如 RND(-4.57,0.1) = -4.6。 该值必须为数字,但不能为 0。 缺省值为 1。
可选的第三个参数 fuzzbits 是最小有效位的数目, numexpr (表示为 64 位浮点二进制) 的内部表示可能低于四舍五入的阈值 (例如,当四舍五入为整数时为 0.5 ) ,但仍会被四舍五入。 例如,总和 9.62 - 5.82 - 9.21 + 6.91 具有内部表示 1.499999999999998 (在 Intel 处理器上)。 如果 fuzzbits 设置为 0 , mult 设置为 1 ,那么此表达式将舍入为 1.0,尽管精确总和为 1.50 ,将舍入为 2.0。 允许四舍五入阈值具有较小的模糊度可补偿具有浮点数和精确结果的计算之间的分钟差异。 在这种情况下,添加 4 位的模糊度足以生成 2.0的预期结果。
如果省略了自变量 fuzzbits ,那么将使用 SET FUZZBITS
指定的值。 FUZZBITS
的安装设置为 6 ,这应该足以满足大多数应用程序的需求。 将 fuzzbits 设置为 0 会产生与 R10 相同的结果。 将 fuzzbits 设置为 10 会产生与 R11 和 R12 相同的结果。
要生成与 R13 相同的结果,请使用以下表达式来代替 RND
函数:
TRUNC(numexpr,1,0) + ((.5+TRUNC(numexpr,1,0)-numexpr)<max(1e-13,min(.5,numexpr*1e-13)))
要生成与 R14,15 和 16 使用相同的结果,请执行以下操作:
RND(numexpr,1,12.5-ln(max(1e-50,abs(numexpr)))/ln(2))
TRUNC。 TRUNC(numexpr[,mult,fuzzbits])。 数值。 将 numexpr 的值截断为 0。 可选的第二个自变量 mult,指定结果是此值的整数倍,例如 TRUNC(4.579,0.1) = 4.5。 该值必须为数字,但不能为 0。 缺省值为 1。
可选的第三个自变量 fuzzbits 是最小有效位的数目, numexpr (表示为 64 位浮点二进制) 的内部表示可能低于最接近的舍入边界,并在截断前向上舍入。 例如,总和 9.62 - 5.82 - 9.21 + 6.91 具有内部表示 1.499999999999998 (在 Intel 处理器上)。 如果 fuzzbits 设置为 0 , mult 设置为 0.1,那么此表达式将截断为 1.4,尽管精确和为 1.50 ,这将截断为 1.5。 将较小的模糊度添加到最接近的舍入边界 (在本例中为 1.5) 可补偿具有浮点数和精确结果的计算之间的分钟差。 在这种情况下,添加 5 位的模糊度足以生成 1.5的预期结果。
如果省略了自变量 fuzzbits ,那么将使用 SET FUZZBITS
指定的值。 FUZZBITS
的安装设置为 6 ,这应该足以满足大多数应用程序的需求。 将 fuzzbits 设置为 0 会产生与 R10 相同的结果。 将 fuzzbits 设置为 10 会产生与 R11 和 R12 相同的结果。
要生成与使用 R13 相同的结果,请执行以下操作:
TRUNC(numexpr,1,0)+(TRUNC(numexpr,1,0)+1-numexpr <= 1e-13)
要生成与 R14,15 和 16 使用相同的结果,请执行以下操作:
TRUNC(numexpr,1,12.5-ln(max(1e-50,abs(numexpr)))/ln(2))
MOD。 MOD(numexpr,modulus)。 数值。 返回 numexpr 除以 modulus 所得到的余数。 两个参数必须都是数值,且 modulus 不得为 0。
SQRT。 SQRT(numexpr)。 数值。 返回 numexpr 的正平方根,numexpr 必须为非负数。
EXP。 EXP(numexpr)。 数值。 返回 e 的 numexpr 次幂,其中 e 是自然对数的底,而 numexpr 为数值。 过大的 numexpr 值所产生的结果可能会超过计算机的容量。
LG10. LG10(numexpr). 数值。 返回以 10 为底数的 numexpr 的对数,numexpr 必须为大于 0 的数字。
LN。 LN(numexpr)。 数值。 返回以 e 为底数的 numexpr 的对数,numexpr 必须为大于 0 的数字。
LNGAMMA。 LNGAMMA(numexpr)。 数值。 返回 numexpr 的完全伽玛函数的对数,numexpr 必须为大于 0 的数字。
ARSIN。 ARSIN(numexpr)。 数值。 返回 numexpr 的反正弦 (arcsine)(以弧度表示),求出的值必须为 -1 和 +1 之间的数值。
ARTAN。 ARTAN(numexpr)。 数值。 返回 numexpr 的反正切 (arctangent)(以弧度表示),必须为数值。
SIN。 SIN(radians)。 数值。 返回 radians 的正弦(以弧度为单位),radians 必须为数字值。
COS。 COS(radians)。 数值。 返回 radians(必须为数字值,以弧度度量)的余弦。