Number
Number
概述
该分类下的函数主要是涉及数字转换和计算,有关数字的几个重要知识点:
- 数字类型和精度
- 计算精度
Byte.From
Byte.From(
value as any,
optional culture as nullable text,
optional roundingMode as nullable number
) as nullable number
将value
转为8bit无符号整型number
值。
无符号整数是指0和有效范围内的正整数。
- 有效范围
0
-255
。 - 如果
value
是null
,则返回null
。 - 如果是数字:
- 如果是小数,先使用参数
roundingMode
指定的模式进行舍入。 - 如果是整数,直接转换,如果超出能表示的范围则会出错。
- 如果是小数,先使用参数
- 如果是其他类型,先使用
Number.FromText
将其转换为数字再继续处理。
参数culture
用于指定区域,该参数会在需要使用Number.FromText
转换时传递进去。
参数roundingMode
用于指定舍入模式。具体参见枚举RoundingMode.Type。默认使用RoundingMode.ToEven
。
Byte.From(123)
Byte.From(4.5)
Byte.From(5.5)
Byte.From("12,3", "fr-FR")
Currency.From
Currency.From(
value as any,
optional culture as nullable text,
optional roundingMode as nullable number
) as nullable number
将value
转为8bit整型currency
值。
- 有效范围
-922,337,203,685,477.5808
-922,337,203,685,477.5807。 - 如果
value
是null
,则返回null
。 - 如果小数位超出4位,先使用参数
roundingMode
指定的模式进行舍入。 - 如果是其他类型,先使用
Number.FromText
将其转换为数字再继续处理。
参数culture
用于指定区域,该参数会在需要使用Number.FromText
转换时传递进去。
参数roundingMode
用于指定舍入模式。具体参见枚举RoundingMode.Type。默认使用RoundingMode.ToEven
。
Currency.From("12.34565")
Currency.From("$12.34565", "en-US")
Decimal.From
Decimal.From(value as any, optional culture as nullable text) as nullable number
将value
转为十进制number
值。
- 有效范围
±1.0e-28
-±7.9e28
,最大小数位28-29位。 - 如果
value
是null
,则返回null
。 - 如果小数位超过有效范围,会使用
RoundingMode.ToEven
模式进行舍入。 - 如果是其他类型,先使用
Number.FromText
将其转换为数字再继续处理。
参数culture
用于指定区域,该参数会在需要使用Number.FromText
转换时传递进去。
Decimal.From(0.99999999999999999999999999975)
Decimal.From(0.99999999999999999999999999985)
Double.From
Double.From(value as any, optional culture as nullable text) as nullable number
将value
转为双精度number
值。
- 有效范围
±1.7e-308
-±1.7e308
,最大小数位15-16位。 - 如果
value
是null
,则返回null
。 - 如果小数位超过有效范围,会使用
RoundingMode.AwayFromZero
模式进行舍入。 - 如果是其他类型,先使用
Number.FromText
将其转换为数字再继续处理。
参数culture
用于指定区域,该参数会在需要使用Number.FromText
转换时传递进去。
Double.From(0.123456789012345675)
Double.From(0.123456789012345685)
Int8.From
Int8.From(
value as any,
optional culture as nullable text,
optional roundingMode as nullable number
) as nullable number
将value
转为8bit整型number
值。
- 有效范围
-128
-127
。 - 如果
value
是null
,则返回null
。 - 如果是数字:
- 如果小数,先使用参数
roundingMode
指定的模式进行舍入。 - 如果是整数,直接转换,如果超出能表示的范围则会出错。
- 如果小数,先使用参数
- 如果是其他类型,先使用
Number.FromText
将其转换为数字再继续处理。
参数culture
用于指定区域,该参数会在需要使用Number.FromText
转换时传递进去。
参数roundingMode
用于指定舍入模式。具体参见枚举RoundingMode.Type。默认使用RoundingMode.ToEven
。
Int8.From(126.5)
Int8.From("12,3", "fr-FR")
Int16.From
Int16.From(
value as any,
optional culture as nullable text,
optional roundingMode as nullable number
) as nullable number
将value
转为16bit整型number
值。
- 有效范围
-32768
-32767
。 - 如果
value
是null
,则返回null
。 - 如果是数字:
- 如果小数,先使用参数
roundingMode
指定的模式进行舍入。 - 如果是整数,直接转换,如果超出能表示的范围则会出错。
- 如果小数,先使用参数
- 如果是其他类型,先使用
Number.FromText
将其转换为数字再继续处理。
参数culture
用于指定区域,该参数会在需要使用Number.FromText
转换时传递进去。
参数roundingMode
用于指定舍入模式。具体参见枚举RoundingMode.Type。默认使用RoundingMode.ToEven
。
Int16.From(126.5)
Int16.From("12,3", "fr-FR")
Int32.From
Int32.From(
value as any,
optional culture as nullable text,
optional roundingMode as nullable number
) as nullable number
将value
转为32bit整型number
值。
- 有效范围
-2147483648
-2147483647
。 - 如果
value
是null
,则返回null
。 - 如果是数字:
- 如果小数,先使用参数
roundingMode
指定的模式进行舍入。 - 如果是整数,直接转换,如果超出能表示的范围则会出错。
- 如果小数,先使用参数
- 如果是其他类型,先使用
Number.FromText
将其转换为数字再继续处理。
参数culture
用于指定区域,该参数会在需要使用Number.FromText
转换时传递进去。
参数roundingMode
用于指定舍入模式。具体参见枚举RoundingMode.Type。默认使用RoundingMode.ToEven
。
Int32.From(126.5)
Int32.From("12,3", "fr-FR")
Int64.From
Int64.From(
value as any,
optional culture as nullable text,
optional roundingMode as nullable number
) as nullable number
将value
转为64bit整型number
值。
- 有效范围
-9223372036854775808
-9223372036854775807
。 - 如果
value
是null
,则返回null
。 - 如果是数字:
- 如果小数,先使用参数
roundingMode
指定的模式进行舍入。 - 如果是整数,直接转换,如果超出能表示的范围则会出错。
- 如果小数,先使用参数
- 如果是其他类型,先使用
Number.FromText
将其转换为数字再继续处理。
参数culture
用于指定区域,该参数会在需要使用Number.FromText
转换时传递进去。
参数roundingMode
用于指定舍入模式。具体参见枚举RoundingMode.Type。默认使用RoundingMode.ToEven
。
Int64.From(126.5)
Int64.From("12,3", "fr-FR")
Number.Abs
Number.Abs(number as nullable number) as nullable number
计算绝对值。
Number.Abs(-99)
Number.Acos
Number.Acos(number as nullable number) as nullable number
计算反余弦,结果是弧度。
Number.Acos(0.5)
Number.Asin
Number.Asin(number as nullable number) as nullable number
计算反正弦,结果是弧度。
Number.Asin(1)
Number.Atan
Number.Atan(number as nullable number) as nullable number
计算反正切,结果是弧度。
Number.Atan(1)
Number.Atan2
Number.Atan2(y as nullable number, x as nullable number) as nullable number
对y
/ x
的结果进行反正切,结果是弧度。
等效形式Number.Atan(y / x)
。
Number.Atan2(1, 1)
Number.BitwiseAnd
Number.BitwiseAnd(
number1 as nullable number,
number2 as nullable number
) as nullable number
计算按位逻辑且。
Number.BitwiseAnd(0x06, 0x02)
Number.BitwiseNot
Number.BitwiseNot(number as any) as any
计算按位逻辑非。
Number.BitwiseNot(0x04)
Number.BitwiseNot(0xFF)
Number.BitwiseOr
Number.BitwiseOr(
number1 as nullable number,
number2 as nullable number
) as nullable number
计算按位逻辑或。
Number.BitwiseOr(0x41, 0x20)
Number.BitwiseShiftLeft
Number.BitwiseShiftLeft(
number1 as nullable number,
number2 as nullable number
) as nullable number
将number1
按位左移number2
。
Number.BitwiseShiftLeft(64, 2)
Number.BitwiseShiftRight
Number.BitwiseShiftRight(
number1 as nullable number,
number2 as nullable number
) as nullable number
将number1
按位右移number2
。
Number.BitwiseShiftRight(64, 2)
Number.BitwiseShiftRight(-5, 2)
Number.BitwiseXor
Number.BitwiseXor(
number1 as nullable number,
number2 as nullable number
) as nullable number
计算按位逻辑异或。
Number.BitwiseXor(0x41, 0x20)
Number.Combinations
Number.Combinations(
setSize as nullable number,
combinationSize as nullable number
) as nullable number
从拥有setSize
个项的集合中取出combinationSize
个项,其所有的可能的组合个数。
Number.Combinations(3, 2)
Number.Cos
Number.Cos(number as nullable number) as nullable number
根据输入弧度number
计算余弦。
Number.Cos(60 / 180 * Number.PI)
Number.Cosh
Number.Cosh(number as nullable number) as nullable number
根据输入弧度number
计算双曲余弦。
Number.Cosh(60 / 180 * Number.PI)
Number.Exp
Number.Exp(number as nullable number) as nullable number
计算自然数e
的number
次幂。
Number.Exp(2.5)
Number.Factorial
Number.Factorial(number as nullable number) as nullable number
计算number
的阶乘。
Number.Factorial(5)
Number.From
Number.From(
value as any,
optional culture as nullable text
) as nullable number
value
可以是text
、logical
、null
、date
、time
、datetime
、datetimezone
、duration
。
text
:文本变数字,见Number.FromText
。logical
:true
为1
;false
为0
。null
:null
。date
、time
、datetime
、datetimezone
:返回表示天数的小数,同Excel公式。duration
:转为带小数的天数。
Number.FromText
Number.FromText(
text as nullable text,
optional culture as nullable text
) as nullable number
根据文本text
将其转换为数字。参数culture
表示区域,默认使用本机区域。
Number.IntegerDivide
Number.IntegerDivide(
number1 as nullable number,
number2 as nullable number,
optional precision as nullable number
) as nullable number
计算number1
/ number2
的结果并取整数部分,其中任一值为null
,结果为null
。
参数precision
用于指定计算精度,可以使用Precision.Type枚举值。默认为Precision.Double
。
Number.IntegerDivide(1e20, 3)
Number.IntegerDivide(1e20, 3, Precision.Decimal)
Number.IsEven
Number.IsEven(number as number) as logical
判断是否是偶数。
Number.IsEven(5)
Number.IsNaN
Number.IsNaN(number as number) as logical
判断是否是#nan
。
#nan = #nan
始终为false
。
Number.IsNaN(#nan)
Number.IsOdd
Number.IsOdd(number as number) as logical
判断是否是奇数。
Number.IsOdd(5)
Number.Ln
Number.Ln(number as nullable number) as nullable number
计算number
的以自然数e
为底的对数。
Number.Ln(Number.E)
Number.Log
Number.Log(
number as nullable number,
optional base as nullable number
) as nullable number
计算以base
为底的number
的对数。
参数base
默认使用自然数e
作为底数。
Number.Log(Number.E)
Number.Log(Number.E, Number.E)
Number.Log10
Number.Log10(number as nullable number) as nullable number
计算number
的以10为底的对数。
Number.Log10(120)
Number.Mod
Number.Mod(
number as nullable number,
divisor as nullable number,
optional precision as nullable number
) as nullable number
计算number
/ divisor
的余数,其中任一值为null
,结果为null
。
参数precision
用于指定计算精度,可以使用Precision.Type枚举值。默认为Precision.Double
。
计算规则:结果数值同两个绝对值的取余结果,结果符号同number
。
值1 | 值2 | 结果 |
---|---|---|
9 | 5 | 4 |
9 | -5 | 4 |
-9 | -5 | -4 |
-9 | 5 | -4 |
Number.Mod(9, 5)
Number.Mod(-9, -5)
Number.Mod(9.5, 5.2)
Number.Permutations
Number.Permutations(
setSize as nullable number,
permutationSize as nullable number
) as nullable number
从拥有setSize
个项的集合中取出permutationSize
个项,其所有的可能的排列个数。
Number.Permutations(3, 2)
Number.Power
Number.Power(number as nullable number, power as nullable number) as nullable number
计算number
的power
次幂,其中任一值为null
,返回null
。
Number.Power(5, 3)
Number.Random
Number.Random() as number
生成介于0-1之间的随机数。
作者注
该函数大概率是Number.RandomBetween
的特殊形式,即Number.RandomBetween(0, 1)
。而Number.RandomBetween
有可能会返回两端的值,但谈论这种问题并没有太大意义,因为它的概率太小了。
Number.Random()
Number.RandomBetween
Number.RandomBetween(bottom as number, top as number) as number
生成介于buttom
和top
之间的随机数。
作者注
该函数会返回两端,假如使用Number.RandomBetween(1, 1)
,那么它永远返回1
。
实际上,由于该函数始终返回实数(也就是带小数),所以讨论是否包含两端的意义并不大。
Number.RandomBetween(1, 5)
Number.Round
Number.Round(
number as nullable number,
optional digits as nullable number,
optional roundingMode as nullable number
) as nullable number
将number
在指定的小数位digits
进行舍入。
参数digits
用于指定舍入小数位,默认为0。
参数roundingMode
用于指定舍入模式。具体参见枚举RoundingMode.Type。默认使用RoundingMode.ToEven
。
Number.Round(123.123456)
Number.Round(123.123450, 4)
Number.Round(123.123451, 4)
Number.Round(123.123550, 4)
Number.RoundAwayFromZero
Number.RoundAwayFromZero(
number as nullable number,
optional digits as nullable number
) as nullable number
将number
在指定的小数位digits
使用RoundingMode.AwayFromZero
模式进行舍入。
参数digits
用于指定舍入小数位,默认为0。
Number.RoundAwayFromZero(123.123456)
Number.RoundAwayFromZero(123.123450, 4)
Number.RoundDown
Number.RoundDown(
number as nullable number,
optional digits as nullable number
) as nullable number
将number
在指定的小数位digits
使用RoundingMode.Down
模式进行舍入。
参数digits
用于指定舍入小数位,默认为0。
Number.RoundDown(123.123456)
Number.RoundDown(123.123450, 4)
Number.RoundTowardZero
Number.RoundTowardZero(
number as nullable number,
optional digits as nullable number
) as nullable number
将number
在指定的小数位digits
使用RoundingMode.TowardZero
模式进行舍入。
参数digits
用于指定舍入小数位,默认为0。
Number.RoundTowardZero(123.123456)
Number.RoundTowardZero(123.123450, 4)
Number.RoundUp
Number.RoundUp(
number as nullable number,
optional digits as nullable number
) as nullable number
将number
在指定的小数位digits
使用RoundingMode.Up
模式进行舍入。
参数digits
用于指定舍入小数位,默认为0。
Number.RoundUp(123.123456)
Number.RoundUp(123.123450, 4)
Number.Sign
Number.Sign(number as nullable number) as nullable number
如果number
为正数返回1
;如果是负数返回-1
;如果是0
返回0
。
Number.Sign(-9999)
Number.Sin
Number.Sin(number as nullable number) as nullable number
根据输入弧度number
计算正弦。
Number.Sin(30 / 180 * Number.PI)
Number.Sinh
Number.Sinh(number as nullable number) as nullable number
根据输入弧度number
计算双曲正弦。
Number.Sinh(30 / 180 * Number.PI)
Number.Sqrt
Number.Sqrt(number as nullable number) as nullable number
求平方根。
输入负数将产生#nan
。
Number.Sqrt(5)
Number.Tan
Number.Tan(number as nullable number) as nullable number
根据输入弧度number
计算正切。
Number.Tan(45 / 180 * Number.PI)
Number.Tanh
Number.Tanh(number as nullable number) as nullable number
根据输入弧度number
计算双曲正切。
Number.Tanh(45 / 180 * Number.PI)
Number.ToText
Number.ToText(
number as nullable number,
optional format as nullable text,
optional culture as nullable text
) as nullable text
将数字number
根据指定的格式化文本format
格式化为文本,有时候需要提供地区信息culture
。
参数format
是一个文本值,即格式化文本字符串,具体参见标准数字格式字符串和自定义数字格式字符串。
参数Culture
是一个可为空的文本值,指定文本日期的区域。默认使用本机区域(Culture.Current
)。
警告
该函数可能会对数字进行四舍五入,请慎重使用。
如:Number.ToText(1.5, "0")
会得到2
。
Percentage.From
Percentage.From(value as any, optional culture as nullable text) as nullable number
将value
转为percentage
值。
- 转换后的结果实际测试是
decimal
类型,最大小数位28-29。 - 如果
value
是null
,则返回null
。 - 如果给定的文本结尾是
%
,则将其转为小数。 - 如果是其他文本或类型,先使用
Number.FromText
将其转换为数字再继续处理。
参数culture
用于指定区域,该参数会在需要使用Number.FromText
转换时传递进去。
Percentage.From("123.456%")
Percentage.From("123,456%", "de-DE")
Single.From
Single.From(value as any, optional culture as nullable text) as nullable number
将value
转为单精度number
值。
- 有效范围
±3.4e-38
-±3.4e38
,最大小数位6-7位。 - 如果
value
是null
,则返回null
。 - 如果小数位超过有效范围,会使用
RoundingMode.AwayFromZero
模式进行舍入。 - 如果是其他类型,先使用
Number.FromText
将其转换为数字再继续处理。
参数culture
用于指定区域,该参数会在需要使用Number.FromText
转换时传递进去。
Single.From(0.1234567890123456)
Single.From(9e99)