math 包

介绍

math 包提供常见的数学运算,常数定义,浮点数处理等功能。包括了以下能力:

  1. 科学常数与类型常数定义;
  2. 浮点数的判断,规整;
  3. 常用的位运算;
  4. 通用的数学函数,如绝对值,三角函数,指数,对数计算;
  5. 最大公约数与最小公倍数。

主要接口

interface MathExtension

public interface MathExtension

为了导出 prop 而作辅助接口,内部为空。

extend Float64 <: MathExtension

extend Float64 <: MathExtension

拓展双精度浮点数以支持一些数学常数。

prop NaN

public static prop NaN: Float64

功能:获取双精度浮点数的非数。

prop Inf

public static prop Inf: Float64

功能:获取双精度浮点数的无穷数。

prop PI

public static prop PI: Float64

功能:获取双精度浮点数的圆周率常数。

prop E

public static prop E: Float64

功能:获取双精度浮点数的自然常数。

prop Max

public static prop Max: Float64

功能:获取双精度浮点数的最大值。

prop Min

public static prop Min: Float64

功能:获取双精度浮点数的最小值。

prop MinDenormal

public static prop MinDenormal: Float64

功能:获取双精度浮点数的最小次正规数。

prop MinNormal

public static prop MinNormal: Float64

功能:获取双精度浮点数的最小正规数。

func isInf

public func isInf(): Bool

功能:根据返回的 Bool 值,判断某个浮点数 Float64 是否为无穷数值。

返回值:如果 Float64 的值正无穷大或负无穷大,则返回 true;否则,返回 false

func isNaN

public func isNaN(): Bool

功能:根据返回的 Bool 值,判断某个浮点数 Float64 是否为非数值。

返回值:如果 Float64 的值为非数值,则返回 true;否则,返回 false

func isNormal

public func isNormal(): Bool

功能:根据返回的 Bool 值,判断某个浮点数 Float64 是否为常规数值。

返回值:如果 Float64 的值是正常的浮点数,返回 true;否则,返回 false

extend Float32 <: MathExtension

extend Float32 <: MathExtension

拓展单精度浮点数以支持一些数学常数。

prop NaN

public static prop NaN: Float32

功能:获取单精度浮点数的非数。

prop Inf

public static prop Inf: Float32

功能:获取单精度浮点数的无穷数。

prop PI

public static prop PI: Float32

功能:获取单精度浮点数的圆周率常数。

prop E

public static prop E: Float32

功能:获取单精度浮点数的自然常数。

prop Max

public static prop Max: Float32

功能:获取单精度浮点数的最大值。

prop Min

public static prop Min: Float32

功能:获取单精度浮点数的最小值。

prop MinDenormal

public static prop MinDenormal: Float32

功能:获取单精度浮点数的最小次正规数。

prop MinNormal

public static prop MinNormal: Float32

功能:获取单精度浮点数的最小正规数。

func isInf

public func isInf(): Bool

功能:根据返回的 Bool 值,判断某个浮点数 Float32 是否为无穷数值。

返回值:如果 Float32 的值正无穷大或负无穷大,则返回 true;否则,返回 false

func isNaN

public func isNaN(): Bool

功能:根据返回的 Bool 值,判断某个浮点数 Float32 是否为非数值。

返回值:如果 Float32 的值为非数值,则返回 true;否则,返回 false

func isNormal

public func isNormal(): Bool

功能:根据返回的 Bool 值,判断某个浮点数 Float32 是否为常规数值。

返回值:如果 Float32 的值是正常的浮点数,返回 true;否则,返回 false

extend Float16 <: MathExtension

extend Float16 <: MathExtension

拓展半精度浮点数以支持一些数学常数。

prop NaN

public static prop NaN: Float16

功能:获取半精度浮点数的非数。

prop Inf

public static prop Inf: Float16

功能:获取半精度浮点数的无穷数。

prop PI

public static prop PI: Float16

功能:获取半精度浮点数的圆周率常数。

prop E

public static prop E: Float16

功能:获取半精度浮点数的自然常数。

prop Max

public static prop Max: Float16

功能:获取半精度浮点数的最大值。

prop Min

public static prop Min: Float16

功能:获取半精度浮点数的最小值。

prop MinDenormal

public static prop MinDenormal: Float16

功能:获取半精度浮点数的最小次正规数。

prop MinNormal

public static prop MinNormal: Float16

功能:获取半精度浮点数的最小正规数。

func isInf

public func isInf(): Bool

功能:根据返回的 Bool 值,判断某个浮点数 Float16 是否为无穷数值。

返回值:如果 Float16 的值正无穷大或负无穷大,则返回 true;否则,返回 false

func isNaN

public func isNaN(): Bool

功能:根据返回的 Bool 值,判断某个浮点数 Float16 是否为非数值。

返回值:如果 Float16 的值为非数值,则返回 true;否则,返回 false

func isNormal

public func isNormal(): Bool

功能:根据返回的 Bool 值,判断某个浮点数 Float16 是否为常规数值。

返回值:如果 Float16 的值是正常的浮点数,返回 true;否则,返回 false

extend Int64 <: MathExtension

extend Int64 <: MathExtension

拓展 64 位有符号整数以支持一些数学常数。

prop Max

public static prop Max: Int64

功能:获取 64 位有符号整数的最大值。

prop Min

public static prop Min: Int64

功能:获取 64 位有符号整数的最小值。

extend Int32 <: MathExtension

extend Int32 <: MathExtension

拓展 32 位有符号整数以支持一些数学常数。

prop Max

public static prop Max: Int32

功能:获取 32 位有符号整数的最大值。

prop Min

public static prop Min: Int32

功能:获取 32 位有符号整数的最小值。

extend Int16 <: MathExtension

extend Int16 <: MathExtension

拓展 16 位有符号整数以支持一些数学常数。

prop Max

public static prop Max: Int16

功能:获取 16 位有符号整数的最大值。

prop Min

public static prop Min: Int16

功能:获取 16 位有符号整数的最小值。

extend Int8 <: MathExtension

extend Int8 <: MathExtension

拓展 8 位有符号整数以支持一些数学常数。

prop Max

public static prop Max: Int8

功能:获取 8 位有符号整数的最大值。

prop Min

public static prop Min: Int8

功能:获取 8 位有符号整数的最小值。

extend UInt64 <: MathExtension

extend UInt64 <: MathExtension

拓展 64 位无符号整数以支持一些数学常数。

prop Max

public static prop Max: UInt64

功能:获取 64 位无符号整数的最大值。

prop Min

public static prop Min: UInt64

功能:获取 64 位无符号整数的最小值。

extend UInt32 <: MathExtension

extend UInt32 <: MathExtension

拓展 32 位无符号整数以支持一些数学常数。

prop Max

public static prop Max: UInt32

功能:获取 32 位无符号整数的最大值。

prop Min

public static prop Min: UInt32

功能:获取 32 位无符号整数的最小值。

extend UInt16 <: MathExtension

extend UInt16 <: MathExtension

拓展 16 位无符号整数以支持一些数学常数。

prop Max

public static prop Max: UInt16

功能:获取 16 位无符号整数的最大值。

prop Min

public static prop Min: UInt16

功能:获取 16 位无符号整数的最小值。

extend UInt8 <: MathExtension

extend UInt8 <: MathExtension

拓展 8 位无符号整数以支持一些数学常数。

prop Max

public static prop Max: UInt8

功能:获取 8 位无符号整数的最大值。

prop Min

public static prop Min: UInt8

功能:获取 8 位无符号整数的最小值。

extend IntNative <: MathExtension

extend IntNative <: MathExtension

拓展平台相关有符号整数以支持一些数学常数。

prop Max

public static prop Max: IntNative

功能:获取平台相关有符号整数的最大值。

prop Min

public static prop Min: IntNative

功能:获取平台相关有符号整数的最小值。

extend UIntNative <: MathExtension

extend UIntNative <: MathExtension

拓展平台相关无符号整数以支持一些数学常数。

prop Max

public static prop Max: UIntNative

功能:获取平台相关无符号整数的最大值。

prop Min

public static prop Min: UIntNative

功能:获取平台相关无符号整数的最小值。

func throwIllegalArgumentException

public func throwIllegalArgumentException(): Int64

功能:此函数用于抛出非法参数异常。

func abs

public func abs(x: Int64): Int64

功能:此函数用于求一个 64 位有符号整数的绝对值。

参数:

  • x:传入的 64 位有符号整数

返回值:返回传入参数的绝对值

异常:

  • OverflowException:当输入参数是有符号整数的最小值,抛出异常

func abs

public func abs(x: Int32): Int32

功能:此函数用于求一个 32 位有符号整数的绝对值。

参数:

  • x:传入的 32 位有符号整数

返回值:返回传入参数的绝对值

异常:

  • OverflowException:当输入参数是有符号整数的最小值,抛出异常

func abs

public func abs(x: Int16): Int16

功能:此函数用于求一个 16 位有符号整数的绝对值。

参数:

  • x:传入的 16 位有符号整数

返回值:返回传入参数的绝对值

异常:

  • OverflowException:当输入参数是有符号整数的最小值,抛出异常

func abs

public func abs(x: Int8): Int8

功能:此函数用于求一个 8 位有符号整数的绝对值。

参数:

  • x:传入的 8 位有符号整数

返回值:返回传入参数的绝对值

异常:

  • OverflowException:当输入参数是有符号整数的最小值,抛出异常

func abs

public func abs(x: Float64): Float64

功能:此函数用于求一个双精度浮点数的绝对值。

参数:

  • x:传入的双精度浮点数

返回值:返回传入参数的绝对值

func abs

public func abs(x: Float32): Float32

功能:此函数用于求一个单精度浮点数的绝对值。

参数:

  • x:传入的单精度浮点数

返回值:返回传入参数的绝对值

func abs

public func abs(x: Float16): Float16

功能:此函数用于求一个半精度浮点数的绝对值。

参数:

  • x:传入的半精度浮点数

返回值:返回传入参数的绝对值

func checkedAbs

public func checkedAbs(x: Int64): Option<Int64>

功能:此函数检查并返回整数绝对值的 Option 类型,若参数是有符号整数的最小值,返回 None;否则,返回 Some(abs(x))

参数:

  • x:传入一个整数

返回值:若参数是有符号整数的最小值,返回 None;否则,返回 Some(abs(x))

func checkedAbs

public func checkedAbs(x: Int32): Option<Int32>

功能:此函数检查并返回整数绝对值的 Option 类型,若参数是有符号整数的最小值,返回 None;否则,返回 Some(abs(x))

参数:

  • x:传入一个整数

返回值:若参数是有符号整数的最小值,返回 None;否则,返回 Some(abs(x))

func checkedAbs

public func checkedAbs(x: Int16): Option<Int16>

功能:此函数检查并返回整数绝对值的 Option 类型,若参数是有符号整数的最小值,返回 None;否则,返回 Some(abs(x))

参数:

  • x:传入一个整数

返回值:若参数是有符号整数的最小值,返回 None;否则,返回 Some(abs(x))

func checkedAbs

public func checkedAbs(x: Int8): Option<Int8>

功能:此函数检查并返回整数绝对值的 Option 类型,若参数是有符号整数的最小值,返回 None;否则,返回 Some(abs(x))

参数:

  • x:传入一个整数

返回值:若参数是有符号整数的最小值,返回 None;否则,返回 Some(abs(x))

func cbrt

public func cbrt(x: Float64): Float64

功能:此函数用于求浮点数的立方根。

参数:

  • x:传入的浮点数

返回值:浮点数的立方根

func cbrt

public func cbrt(x: Float32): Float32

功能:此函数用于求浮点数的立方根。

参数:

  • x:传入的浮点数

返回值:浮点数的立方根

func cbrt

public func cbrt(x: Float16): Float16

功能:此函数用于求浮点数的立方根。

参数:

  • x:传入的浮点数

返回值:浮点数的立方根

func ceil

public func ceil(x: Float64): Float64

功能:此函数用于求浮点数的向上取整值。

参数:

  • x:传入的浮点数

返回值:返回传入浮点数的向上取整值

func ceil

public func ceil(x: Float32): Float32

功能:此函数用于求浮点数的向上取整值。

参数:

  • x:传入的浮点数

返回值:返回传入浮点数的向上取整值

func ceil

public func ceil(x: Float16): Float16

功能:此函数用于求浮点数的向上取整值。

参数:

  • x:传入的浮点数

返回值:返回传入浮点数的向上取整值

func clamp

public func clamp(v: Float64, min: Float64, max: Float64): Float64

功能:此函数用于求浮点数的范围区间数。如果此浮点数在该范围区间则返回此浮点数;如果此浮点数小于这个范围区间,则返回该范围区间的最小值;如果此浮点数大于这个范围区间,则返回该范围区间的最大值;如果是 NaN 则返回 NaN

参数:

  • v:传入一个浮点数
  • min:指定最小值
  • max:指定最大值

返回值:如果 vminmax 之间则返回 v,如果 v 小于 min 则返回 min,如果 v 大于 max,则返回 max,如果是 NaN 则需要返回 NaN

异常:

  • IllegalArgumentException:当参数 min 或参数 maxNaN,或参数 min 大于参数 max 时,抛出异常

func clamp

public func clamp(v: Float32, min: Float32, max: Float32): Float32

功能:此函数用于求浮点数的范围区间数。如果此浮点数在该范围区间则返回此浮点数;如果此浮点数小于这个范围区间,则返回该范围区间的最小值;如果此浮点数大于这个范围区间,则返回该范围区间的最大值;如果是 NaN 则返回 NaN

参数:

  • v:传入一个浮点数
  • min:指定最小值
  • max:指定最大值

返回值:如果 vminmax 之间则返回 v,如果 v 小于 min 则返回 min,如果 v 大于 max,则返回 max,如果是 NaN 则需要返回 NaN

异常:

  • IllegalArgumentException:当参数 min 或参数 maxNaN,或参数 min 大于参数 max 时,抛出异常

func clamp

public func clamp(v: Float16, min: Float16, max: Float16): Float16

功能:此函数用于求浮点数的范围区间数。如果此浮点数在该范围区间则返回此浮点数;如果此浮点数小于这个范围区间,则返回该范围区间的最小值;如果此浮点数大于这个范围区间,则返回该范围区间的最大值;如果是 NaN 则返回 NaN

参数:

  • v:传入一个浮点数
  • min:指定最小值
  • max:指定最大值

返回值:如果 vminmax 之间则返回 v,如果 v 小于 min 则返回 min,如果 v 大于 max,则返回 max,如果是 NaN 则需要返回 NaN

异常:

  • IllegalArgumentException:当参数 min 或参数 maxNaN,或参数 min 大于参数 max 时,抛出异常

func countOne

public func countOne(x: Int64): Int8

功能:此函数用于求二进制表达中值为 1 的位的个数。

参数:

  • x:传入一个整数

返回值:返回值为 1 的位个数

func countOne

public func countOne(x: Int32): Int8

功能:此函数用于求二进制表达中值为 1 的位的个数。

参数:

  • x:传入一个整数

返回值:返回值为 1 的位个数

func countOne

public func countOne(x: Int16): Int8

功能:此函数用于求二进制表达中值为 1 的位的个数。

参数:

  • x:传入一个整数

返回值:返回值为 1 的位个数

func countOne

public func countOne(x: Int8): Int8

功能:此函数用于求二进制表达中值为 1 的位的个数。

参数:

  • x:传入一个整数

返回值:返回值为 1 的位个数

func countOne

public func countOne(x: UInt64): Int8

功能:此函数用于求二进制表达中值为 1 的位的个数。

参数:

  • x:传入一个整数

返回值:返回值为 1 的位个数

func countOne

public func countOne(x: UInt32): Int8

功能:此函数用于求二进制表达中值为 1 的位的个数。

参数:

  • x:传入一个整数

返回值:返回值为 1 的位个数

func countOne

public func countOne(x: UInt16): Int8

功能:此函数用于求二进制表达中值为 1 的位的个数。

参数:

  • x:传入一个整数

返回值:返回值为 1 的位个数

func countOne

public func countOne(x: UInt8): Int8

功能:此函数用于求二进制表达中值为 1 的位的个数。

参数:

  • x:传入一个整数

返回值:返回值为 1 的位个数

func erf

public func erf(x: Float64): Float64

功能:此函数用于求浮点数的误差值。相关定义是:$$erf(x) = \frac{2}{\sqrt{\pi}}\int_0^xe^{-t^2}dt$$

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的误差值

func erf

public func erf(x: Float32): Float32

功能:此函数用于求浮点数的误差值。相关定义是:$$erf(x) = \frac{2}{\sqrt{\pi}}\int_0^xe^{-t^2}dt$$

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的误差值

func erf

public func erf(x: Float16): Float16

功能:此函数用于求浮点数的误差值。相关定义是:$$erf(x) = \frac{2}{\sqrt{\pi}}\int_0^xe^{-t^2}dt$$

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的误差值

func pow

public func pow(base: Float64, exponent: Float64): Float64

功能:此函数用于求浮点数 baseexponent 次幂。

参数:

  • base:传入一个浮点数
  • exponent:指定计算幂的次数

返回值:返回传入浮点数 baseexponent 次幂

func pow

public func pow(base: Float32, exponent: Float32): Float32

功能:此函数用于求浮点数 baseexponent 次幂。

参数:

  • base:传入一个浮点数
  • exponent:指定计算幂的次数

返回值:返回传入浮点数 baseexponent 次幂

func pow

public func pow(base: Float64, exponent: Int64): Float64

功能:此函数用于求浮点数 baseexponent 次幂。

参数:

  • base:传入一个浮点数
  • exponent:指定计算幂的次数

返回值:返回传入浮点数 baseexponent 次幂

func pow

public func pow(base: Float32, exponent: Int32): Float32

功能:此函数用于求浮点数 baseexponent 次幂。

参数:

  • base:传入一个浮点数
  • exponent:指定计算幂的次数

返回值:返回传入浮点数 baseexponent 次幂

func exp

public func exp(x: Float64): Float64

功能:此函数用于求自然常数 e 的 x 次幂。

参数:

  • x:传入一个浮点数

返回值:返回自然常数 e 的 x 次幂

func exp

public func exp(x: Float32): Float32

功能:此函数用于求自然常数 e 的 x 次幂。

参数:

  • x:传入一个浮点数

返回值:返回自然常数 e 的 x 次幂

func exp

public func exp(x: Float16): Float16

功能:此函数用于求自然常数 e 的 x 次幂。

参数:

  • x:传入一个浮点数

返回值:返回自然常数 e 的 x 次幂

func exp2

public func exp2(x: Float64): Float64

功能:此函数用于求 2 的 x 次幂。

参数:

  • x:传入一个浮点数

返回值:返回 2 的 x 次幂

func exp2

public func exp2(x: Float32): Float32

功能:此函数用于求 2 的 x 次幂。

参数:

  • x:传入一个浮点数

返回值:返回 2 的 x 次幂

func exp2

public func exp2(x: Float16): Float16

功能:此函数用于求 2 的 x 次幂。

参数:

  • x:传入一个浮点数

返回值:返回 2 的 x 次幂

func floor

public func floor(x: Float64): Float64

功能:此函数用于求浮点数的向下取整值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的向下取整值

func floor

public func floor(x: Float32): Float32

功能:此函数用于求浮点数的向下取整值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的向下取整值

func floor

public func floor(x: Float16): Float16

功能:此函数用于求浮点数的向下取整值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的向下取整值

func gamma

public func gamma(x: Float64): Float64

功能:此函数用于求浮点数的 Gamma 值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的 Gamma 值

func gamma

public func gamma(x: Float32): Float32

功能:此函数用于求浮点数的 Gamma 值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的 Gamma 值

func gamma

public func gamma(x: Float16): Float16

功能:此函数用于求浮点数的 Gamma 值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的 Gamma 值

func gcd

public func gcd(x: Int64, y: Int64): Int64

功能:此函数用于求两数的最大公约数。

参数:

  • x:传入第一个整数
  • y:传入第二个整数

返回值:返回两个整数最大公约数

异常:

  • IllegalArgumentException:当两参数为有符号整数最小值,或一个参数为有符号整数最小值且另一个参数为 0 时,抛出异常

func gcd

public func gcd(x: Int32, y: Int32): Int32

功能:此函数用于求两数的最大公约数。

参数:

  • x:传入第一个整数
  • y:传入第二个整数

返回值:返回两个整数最大公约数

异常:

  • IllegalArgumentException:当两参数为有符号整数最小值,或一个参数为有符号整数最小值且另一个参数为 0 时,抛出异常

func gcd

public func gcd(x: Int16, y: Int16): Int16

功能:此函数用于求两数的最大公约数。

参数:

  • x:传入第一个整数
  • y:传入第二个整数

返回值:返回两个整数最大公约数

异常:

  • IllegalArgumentException:当两参数为有符号整数最小值,或一个参数为有符号整数最小值且另一个参数为 0 时,抛出异常

func gcd

public func gcd(x: Int8, y: Int8): Int8

功能:此函数用于求两数的最大公约数。

参数:

  • x:传入第一个整数
  • y:传入第二个整数

返回值:返回两个整数最大公约数

异常:

  • IllegalArgumentException:当两参数为有符号整数最小值,或一个参数为有符号整数最小值且另一个参数为 0 时,抛出异常

func gcd

public func gcd(x: UInt64, y: UInt64): UInt64

功能:此函数用于求两数的最大公约数。

参数:

  • x:传入第一个整数
  • y:传入第二个整数

返回值:返回两个整数最大公约数

func gcd

public func gcd(x: UInt32, y: UInt32): UInt32

功能:此函数用于求两数的最大公约数。

参数:

  • x:传入第一个整数
  • y:传入第二个整数

返回值:返回两个整数最大公约数

func gcd

public func gcd(x: UInt16, y: UInt16): UInt16

功能:此函数用于求两数的最大公约数。

参数:

  • x:传入第一个整数
  • y:传入第二个整数

返回值:返回两个整数最大公约数

func gcd

public func gcd(x: UInt8, y: UInt8): UInt8

功能:此函数用于求两数的最大公约数。

参数:

  • x:传入第一个整数
  • y:传入第二个整数

返回值:返回两个整数最大公约数

func lcm

public func lcm(x: Int64, y: Int64): Int64

功能:此函数用于求两数的最小公倍数。

参数:

  • x:传入第一个整数
  • y:传入第二个整数

返回值:返回两个整数最小公倍数

异常:

  • IllegalArgumentException:当返回值超出有符号整数类型值对应范围

func lcm

public func lcm(x: Int32, y: Int32): Int32

功能:此函数用于求两数的最小公倍数。

参数:

  • x:传入第一个整数
  • y:传入第二个整数

返回值:返回两个整数最小公倍数

异常:

  • IllegalArgumentException:当返回值超出有符号整数类型值对应范围

func lcm

public func lcm(x: Int16, y: Int16): Int16

功能:此函数用于求两数的最小公倍数。

参数:

  • x:传入第一个整数
  • y:传入第二个整数

返回值:返回两个整数最小公倍数

异常:

  • IllegalArgumentException:当返回值超出有符号整数类型值对应范围

func lcm

public func lcm(x: Int8, y: Int8): Int8

功能:此函数用于求两数的最小公倍数。

参数:

  • x:传入第一个整数
  • y:传入第二个整数

返回值:返回两个整数最小公倍数

异常:

  • IllegalArgumentException:当返回值超出有符号整数类型值对应范围

func lcm

public func lcm(x: UInt64, y: UInt64): UInt64

功能:此函数用于求两数的最小公倍数。

参数:

  • x:传入第一个整数
  • y:传入第二个整数

返回值:返回两个整数最小公倍数

异常:

  • IllegalArgumentException:当返回值超出整数类型值对应范围时,抛出异常

func lcm

public func lcm(x: UInt32, y: UInt32): UInt32

功能:此函数用于求两数的最小公倍数。

参数:

  • x:传入第一个整数
  • y:传入第二个整数

返回值:返回两个整数最小公倍数

异常:

  • IllegalArgumentException:当返回值超出整数类型值对应范围时,抛出异常

func lcm

public func lcm(x: UInt16, y: UInt16): UInt16

功能:此函数用于求两数的最小公倍数。

参数:

  • x:传入第一个整数
  • y:传入第二个整数

返回值:返回两个整数最小公倍数

异常:

  • IllegalArgumentException:当返回值超出整数类型值对应范围时,抛出异常

func lcm

public func lcm(x: UInt8, y: UInt8): UInt8

功能:此函数用于求两数的最小公倍数。

参数:

  • x:传入第一个整数
  • y:传入第二个整数

返回值:返回两个整数最小公倍数

异常:

  • IllegalArgumentException:当返回值超出整数类型值对应范围时,抛出异常

func leadingZeros

public func leadingZeros(x: Int64): Int8

功能:此函数用于返回整数的二进制表达中从最高位算起,连续为 0 的位数。如果最高位不是 0,则返回 0。

参数:

  • x:传入一个整数

返回值:返回从最高位算起,连续 0 的位数

func leadingZeros

public func leadingZeros(x: Int32): Int8

功能:此函数用于返回整数的二进制表达中从最高位算起,连续为 0 的位数。如果最高位不是 0,则返回 0。

参数:

  • x:传入一个整数

返回值:返回从最高位算起,连续 0 的位数

func leadingZeros

public func leadingZeros(x: Int16): Int8

功能:此函数用于返回整数的二进制表达中从最高位算起,连续为 0 的位数。如果最高位不是 0,则返回 0。

参数:

  • x:传入一个整数

返回值:返回从最高位算起,连续 0 的位数

func leadingZeros

public func leadingZeros(x: Int8): Int8

功能:此函数用于返回整数的二进制表达中从最高位算起,连续为 0 的位数。如果最高位不是 0,则返回 0。

参数:

  • x:传入一个整数

返回值:返回从最高位算起,连续 0 的位数

func leadingZeros

public func leadingZeros(x: UInt64): Int8

功能:此函数用于返回整数的二进制表达中从最高位算起,连续为 0 的位数。如果最高位不是 0,则返回 0。

参数:

  • x:传入一个整数

返回值:返回从最高位算起,连续 0 的位数

func leadingZeros

public func leadingZeros(x: UInt32): Int8

功能:此函数用于返回整数的二进制表达中从最高位算起,连续为 0 的位数。如果最高位不是 0,则返回 0。

参数:

  • x:传入一个整数

返回值:返回从最高位算起,连续 0 的位数

func leadingZeros

public func leadingZeros(x: UInt16): Int8

功能:此函数用于返回整数的二进制表达中从最高位算起,连续为 0 的位数。如果最高位不是 0,则返回 0。

参数:

  • x:传入一个整数

返回值:返回从最高位算起,连续 0 的位数

func leadingZeros

public func leadingZeros(x: UInt8): Int8

功能:此函数用于返回整数的二进制表达中从最高位算起,连续为 0 的位数。如果最高位不是 0,则返回 0。

参数:

  • x:传入一个整数

返回值:返回从最高位算起,连续 0 的位数

func log

public func log(x: Float64): Float64

功能:此函数用于求以 e 为底 x 的对数。

参数:

  • x:传入一个浮点数

返回值:返回以 e 为底 x 的对数

异常:

  • IllegalArgumentException:当输入值不为正时,抛出异常

func log

public func log(x: Float32): Float32

功能:此函数用于求以 e 为底 x 的对数。

参数:

  • x:传入一个浮点数

返回值:返回以 e 为底 x 的对数

异常:

  • IllegalArgumentException:当输入值不为正时,抛出异常

func log

public func log(x: Float16): Float16

功能:此函数用于求以 e 为底 x 的对数。

参数:

  • x:传入一个浮点数

返回值:返回以 e 为底 x 的对数

异常:

  • IllegalArgumentException:当输入值不为正时,抛出异常

func log2

public func log2(x: Float64): Float64

功能:此函数用于求以 2 为底 x 的对数。

参数:

  • x:传入一个浮点数

返回值:返回以 2 为底 x 的对数

异常:

  • IllegalArgumentException:当输入值不为正时,抛出异常

func log2

public func log2(x: Float32): Float32

功能:此函数用于求以 2 为底 x 的对数。

参数:

  • x:传入一个浮点数

返回值:返回以 2 为底 x 的对数

异常:

  • IllegalArgumentException:当输入值不为正时,抛出异常

func log2

public func log2(x: Float16): Float16

功能:此函数用于求以 2 为底 x 的对数。

参数:

  • x:传入一个浮点数

返回值:返回以 2 为底 x 的对数

异常:

  • IllegalArgumentException:当输入值不为正时,抛出异常

func log10

public func log10(x: Float64): Float64

功能:此函数用于求以 10 为底 x 的对数。

参数:

  • x:传入一个浮点数

返回值:返回以 10 为底 x 的对数

异常:

  • IllegalArgumentException:当输入值不为正时,抛出异常

func log10

public func log10(x: Float32): Float32

功能:此函数用于求以 10 为底 x 的对数。

参数:

  • x:传入一个浮点数

返回值:返回以 10 为底 x 的对数

异常:

  • IllegalArgumentException:当输入值不为正时,抛出异常

func log10

public func log10(x: Float16): Float16

功能:此函数用于求以 10 为底 x 的对数。

参数:

  • x:传入一个浮点数

返回值:返回以 10 为底 x 的对数

异常:

  • IllegalArgumentException:当输入值不为正时,抛出异常

func logBase

public func logBase(x: Float64, base: Float64): Float64

功能:此函数用于求以 e 为底 x 的对数与以 e 为底 base 的对数的商。

参数:

  • x:传入一个浮点数
  • base:传入第二个浮点数

返回值:返回以 e 为底 x 的对数与以 e 为底 base 的对数的商

异常:

  • IllegalArgumentException:当参数 x 或参数 base 不为正,或参数 base 为 1.0 时,抛出异常

func logBase

public func logBase(x: Float32, base: Float32): Float32

功能:此函数用于求以 e 为底 x 的对数与以 e 为底 base 的对数的商。

参数:

  • x:传入一个浮点数
  • base:传入第二个浮点数

返回值:返回以 e 为底 x 的对数与以 e 为底 base 的对数的商

异常:

  • IllegalArgumentException:当参数 x 或参数 base 不为正,或参数 base 为 1.0 时,抛出异常

func logBase

public func logBase(x: Float16, base: Float16): Float16

功能:此函数用于求以 e 为底 x 的对数与以 e 为底 base 的对数的商。

参数:

  • x:传入一个浮点数
  • base:传入第二个浮点数

返回值:返回以 e 为底 x 的对数与以 e 为底 base 的对数的商

异常:

  • IllegalArgumentException:当参数 x 或参数 base 不为正,或参数 base 为 1.0 时,抛出异常

func max

public func max(a: Int64, b: Int64): Int64

功能:此函数用于求两个数的最大值。

参数:

  • a:传入的第一个数
  • b:传入的第二个数

返回值:返回两个数的最大值

func max

public func max(a: Int32, b: Int32): Int32

功能:此函数用于求两个数的最大值。

参数:

  • a:传入的第一个数
  • b:传入的第二个数

返回值:返回两个数的最大值

func max

public func max(a: Int16, b: Int16): Int16

功能:此函数用于求两个数的最大值。

参数:

  • a:传入的第一个数
  • b:传入的第二个数

返回值:返回两个数的最大值

func max

public func max(a: Int8, b: Int8): Int8

功能:此函数用于求两个数的最大值。

参数:

  • a:传入的第一个数
  • b:传入的第二个数

返回值:返回两个数的最大值

func max

public func max(a: UInt64, b: UInt64): UInt64

功能:此函数用于求两个数的最大值。

参数:

  • a:传入的第一个数
  • b:传入的第二个数

返回值:返回两个数的最大值

func max

public func max(a: UInt32, b: UInt32): UInt32

功能:此函数用于求两个数的最大值。

参数:

  • a:传入的第一个数
  • b:传入的第二个数

返回值:返回两个数的最大值

func max

public func max(a: UInt16, b: UInt16): UInt16

功能:此函数用于求两个数的最大值。

参数:

  • a:传入的第一个数
  • b:传入的第二个数

返回值:返回两个数的最大值

func max

public func max(a: UInt8, b: UInt8): UInt8

功能:此函数用于求两个数的最大值。

参数:

  • a:传入的第一个数
  • b:传入的第二个数

返回值:返回两个数的最大值

func max

public func max(a: Float64, b: Float64): Float64

功能:此函数用于求两个数的最大值。

参数:

  • a:传入的第一个数
  • b:传入的第二个数

返回值:返回两个数的最大值

func max

public func max(a: Float32, b: Float32): Float32

功能:此函数用于求两个数的最大值。

参数:

  • a:传入的第一个数
  • b:传入的第二个数

返回值:返回两个数的最大值

func max

public func max(a: Float16, b: Float16): Float16

功能:此函数用于求两个数的最大值。

参数:

  • a:传入的第一个数
  • b:传入的第二个数

返回值:返回两个数的最大值

func maxNaN

public func maxNaN(a: Float64, b: Float64): Float64

功能:此函数用于求两个浮点数的最大值,有非数返回非数。

参数:

  • a:传入的第一个浮点数
  • b: 传入的第二个浮点数

返回值:返回两个浮点数最大值, 有非数返回非数

func maxNaN

public func maxNaN(a: Float32, b: Float32): Float32

功能:此函数用于求两个浮点数的最大值,有非数返回非数。

参数:

  • a:传入的第一个浮点数
  • b: 传入的第二个浮点数

返回值:返回两个浮点数最大值, 有非数返回非数

func maxNaN

public func maxNaN(a: Float16, b: Float16): Float16

功能:此函数用于求两个浮点数的最大值,有非数返回非数。

参数:

  • a:传入的第一个浮点数
  • b: 传入的第二个浮点数

返回值:返回两个浮点数最大值, 有非数返回非数

func min

public func min(a: Int64, b: Int64): Int64

功能:此函数用于求两个数的最小值。

参数:

  • a:传入的第一个数
  • b:传入的第二个数

返回值:返回两个数的最小值

func min

public func min(a: Int32, b: Int32): Int32

功能:此函数用于求两个数的最小值。

参数:

  • a:传入的第一个数
  • b:传入的第二个数

返回值:返回两个数的最小值

func min

public func min(a: Int16, b: Int16): Int16

功能:此函数用于求两个数的最小值。

参数:

  • a:传入的第一个数
  • b:传入的第二个数

返回值:返回两个数的最小值

func min

public func min(a: Int8, b: Int8): Int8

功能:此函数用于求两个数的最小值。

参数:

  • a:传入的第一个数
  • b:传入的第二个数

返回值:返回两个数的最小值

func min

public func min(a: UInt64, b: UInt64): UInt64

功能:此函数用于求两个数的最小值。

参数:

  • a:传入的第一个数
  • b:传入的第二个数

返回值:返回两个数的最小值

func min

public func min(a: UInt32, b: UInt32): UInt32

功能:此函数用于求两个数的最小值。

参数:

  • a:传入的第一个数
  • b:传入的第二个数

返回值:返回两个数的最小值

func min

public func min(a: UInt16, b: UInt16): UInt16

功能:此函数用于求两个数的最小值。

参数:

  • a:传入的第一个数
  • b:传入的第二个数

返回值:返回两个数的最小值

func min

public func min(a: UInt8, b: UInt8): UInt8

功能:此函数用于求两个数的最小值。

参数:

  • a:传入的第一个数
  • b:传入的第二个数

返回值:返回两个数的最小值

func min

public func min(a: Float64, b: Float64): Float64

功能:此函数用于求两个数的最小值。

参数:

  • a:传入的第一个数
  • b:传入的第二个数

返回值:返回两个数的最小值

func min

public func min(a: Float32, b: Float32): Float32

功能:此函数用于求两个数的最小值。

参数:

  • a:传入的第一个数
  • b:传入的第二个数

返回值:返回两个数的最小值

func min

public func min(a: Float16, b: Float16): Float16

功能:此函数用于求两个数的最小值。

参数:

  • a:传入的第一个数
  • b:传入的第二个数

返回值:返回两个数的最小值

func minNaN

public func minNaN(a: Float64, b: Float64): Float64

功能:此函数用于求两个浮点数的最小值, 有非数返回非数。

参数:

  • a:传入第一个浮点数
  • b:传入第二个浮点数

返回值:返回两个浮点数最小值, 有非数返回非数

func minNaN

public func minNaN(a: Float32, b: Float32): Float32

功能:此函数用于求两个浮点数的最小值, 有非数返回非数。

参数:

  • a:传入第一个浮点数
  • b:传入第二个浮点数

返回值:返回两个浮点数最小值, 有非数返回非数

func minNaN

public func minNaN(a: Float16, b: Float16): Float16

功能:此函数用于求两个浮点数的最小值, 有非数返回非数。

参数:

  • a:传入第一个浮点数
  • b:传入第二个浮点数

返回值:返回两个浮点数最小值, 有非数返回非数

func reverse

public func reverse(x: UInt64): UInt64

功能:此函数用于无符号数的按位反转,返回反转结果对应的无符号数。

参数:

  • x:传入一个无符号整数

返回值:返回反转结果对应的无符号数

func reverse

public func reverse(x: UInt32): UInt32

功能:此函数用于无符号数的按位反转,返回反转结果对应的无符号数。

参数:

  • x:传入一个无符号整数

返回值:返回反转结果对应的无符号数

func reverse

public func reverse(x: UInt16): UInt16

功能:此函数用于无符号数的按位反转,返回反转结果对应的无符号数。

参数:

  • x:传入一个无符号整数

返回值:返回反转结果对应的无符号数

func reverse

public func reverse(x: UInt8): UInt8

功能:此函数用于无符号数的按位反转,返回反转结果对应的无符号数。

参数:

  • x:传入一个无符号整数

返回值:返回反转结果对应的无符号数

func rotate

public func rotate(num: Int64, d: Int8): Int64

功能:此函数用于整数的按位旋转,返回旋转结果对应的整数。

参数:

  • num:传入一个整数
  • d:旋转位数,负数右移,正数左移

返回值:返回旋转后的整数

func rotate

public func rotate(num: Int32, d: Int8): Int32

功能:此函数用于整数的按位旋转,返回旋转结果对应的整数。

参数:

  • num:传入一个整数
  • d:旋转位数,负数右移,正数左移

返回值:返回旋转后的整数

func rotate

public func rotate(num: Int16, d: Int8): Int16

功能:此函数用于整数的按位旋转,返回旋转结果对应的整数。

参数:

  • num:传入一个整数
  • d:旋转位数,负数右移,正数左移

返回值:返回旋转后的整数

func rotate

public func rotate(num: Int8, d: Int8): Int8

功能:此函数用于整数的按位旋转,返回旋转结果对应的整数。

参数:

  • num:传入一个整数
  • d:旋转位数,负数右移,正数左移

返回值:返回旋转后的整数

func rotate

public func rotate(num: UInt64, d: Int8): UInt64

功能:此函数用于整数的按位旋转,返回旋转结果对应的整数。

参数:

  • num:传入一个整数
  • d:旋转位数,负数右移,正数左移

返回值:返回旋转后的整数

func rotate

public func rotate(num: UInt32, d: Int8): UInt32

功能:此函数用于整数的按位旋转,返回旋转结果对应的整数。

参数:

  • num:传入一个整数
  • d:旋转位数,负数右移,正数左移

返回值:返回旋转后的整数

func rotate

public func rotate(num: UInt16, d: Int8): UInt16

功能:此函数用于整数的按位旋转,返回旋转结果对应的整数。

参数:

  • num:传入一个整数
  • d:旋转位数,负数右移,正数左移

返回值:返回旋转后的整数

func rotate

public func rotate(num: UInt8, d: Int8): UInt8

功能:此函数用于整数的按位旋转,返回旋转结果对应的整数。

参数:

  • num:传入一个整数
  • d:旋转位数,负数右移,正数左移

返回值:返回旋转后的整数

func sqrt

public func sqrt(x: Float64): Float64

功能:此函数用于求浮点数的算术平方根。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的算术平方根

异常:

  • IllegalArgumentException:当输入值为负数时,抛出异常

func sqrt

public func sqrt(x: Float32): Float32

功能:此函数用于求浮点数的算术平方根。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的算术平方根

异常:

  • IllegalArgumentException:当输入值为负数时,抛出异常

func sqrt

public func sqrt(x: Float16): Float16

功能:此函数用于求浮点数的算术平方根。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的算术平方根

异常:

  • IllegalArgumentException:当输入值为负数时,抛出异常

func trailingZeros

public func trailingZeros(x: Int64): Int8

功能:此函数用于返回整数的二进制表达中从最低位算起,连续 0 的个数。如果最低位不是 0,则返回 0。

参数:

  • x:传入一个整数

返回值:返回最低位算起,有多少位连续为 0

func trailingZeros

public func trailingZeros(x: Int32): Int8

功能:此函数用于返回整数的二进制表达中从最低位算起,连续 0 的个数。如果最低位不是 0,则返回 0。

参数:

  • x:传入一个整数

返回值:返回最低位算起,有多少位连续为 0

func trailingZeros

public func trailingZeros(x: Int16): Int8

功能:此函数用于返回整数的二进制表达中从最低位算起,连续 0 的个数。如果最低位不是 0,则返回 0。

参数:

  • x:传入一个整数

返回值:返回最低位算起,有多少位连续为 0

func trailingZeros

public func trailingZeros(x: Int8): Int8

功能:此函数用于返回整数的二进制表达中从最低位算起,连续 0 的个数。如果最低位不是 0,则返回 0。

参数:

  • x:传入一个整数

返回值:返回最低位算起,有多少位连续为 0

func trailingZeros

public func trailingZeros(x: UInt64): Int8

功能:此函数用于返回整数的二进制表达中从最低位算起,连续 0 的个数。如果最低位不是 0,则返回 0。

参数:

  • x:传入一个整数

返回值:返回最低位算起,有多少位连续为 0

func trailingZeros

public func trailingZeros(x: UInt32): Int8

功能:此函数用于返回整数的二进制表达中从最低位算起,连续 0 的个数。如果最低位不是 0,则返回 0。

参数:

  • x:传入一个整数

返回值:返回最低位算起,有多少位连续为 0

func trailingZeros

public func trailingZeros(x: UInt16): Int8

功能:此函数用于返回整数的二进制表达中从最低位算起,连续 0 的个数。如果最低位不是 0,则返回 0。

参数:

  • x:传入一个整数

返回值:返回最低位算起,有多少位连续为 0

func trailingZeros

public func trailingZeros(x: UInt8): Int8

功能:此函数用于返回整数的二进制表达中从最低位算起,连续 0 的个数。如果最低位不是 0,则返回 0。

参数:

  • x:传入一个整数

返回值:返回最低位算起,有多少位连续为 0

func trunc

public func trunc(x: Float64): Float64

功能:此函数用于浮点数的截断取整。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数截断后取整值

func trunc

public func trunc(x: Float32): Float32

功能:此函数用于浮点数的截断取整。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数截断后取整值

func trunc

public func trunc(x: Float16): Float16

功能:此函数用于浮点数的截断取整。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数截断后取整值

func sin

public func sin(x: Float64): Float64

功能:此函数用于计算浮点数的正弦函数值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的正弦函数值

func sin

public func sin(x: Float32): Float32

功能:此函数用于计算浮点数的正弦函数值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的正弦函数值

func sin

public func sin(x: Float16): Float16

功能:此函数用于计算浮点数的正弦函数值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的正弦函数值

func cos

public func cos(x: Float64): Float64

功能:此函数用于计算浮点数的余弦函数值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的余弦函数值

func cos

public func cos(x: Float32): Float32

功能:此函数用于计算浮点数的余弦函数值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的余弦函数值

func cos

public func cos(x: Float16): Float16

功能:此函数用于计算浮点数的余弦函数值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的余弦函数值

func tan

public func tan(x: Float64): Float64

功能:此函数用于计算浮点数的正切函数值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的正切函数值

func tan

public func tan(x: Float32): Float32

功能:此函数用于计算浮点数的正切函数值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的正切函数值

func tan

public func tan(x: Float16): Float16

功能:此函数用于计算浮点数的正切函数值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的正切函数值

func asin

public func asin(x: Float64): Float64

功能:此函数用于计算浮点数的反正弦函数值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的反正弦函数值

异常:

  • IllegalArgumentException:当参数 x 大于 1.0 或小于 -1.0 时,抛出异常

func asin

public func asin(x: Float32): Float32

功能:此函数用于计算浮点数的反正弦函数值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的反正弦函数值

异常:

  • IllegalArgumentException:当参数 x 大于 1.0 或小于 -1.0 时,抛出异常

func asin

public func asin(x: Float16): Float16

功能:此函数用于计算浮点数的反正弦函数值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的反正弦函数值

异常:

  • IllegalArgumentException:当参数 x 大于 1.0 或小于 -1.0 时,抛出异常

func acos

public func acos(x: Float64): Float64

功能:此函数用于计算浮点数的反余弦函数值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的反余弦函数值

异常:

  • IllegalArgumentException:当参数 x 大于 1.0 或小于 -1.0 时,抛出异常

func acos

public func acos(x: Float32): Float32

功能:此函数用于计算浮点数的反余弦函数值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的反余弦函数值

异常:

  • IllegalArgumentException:当参数 x 大于 1.0 或小于 -1.0 时,抛出异常

func acos

public func acos(x: Float16): Float16

功能:此函数用于计算浮点数的反余弦函数值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的反余弦函数值

异常:

  • IllegalArgumentException:当参数 x 大于 1.0 或小于 -1.0 时,抛出异常

func atan

public func atan(x: Float64): Float64

功能:此函数用于计算浮点数的反正切函数值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的反正切函数值

func atan

public func atan(x: Float32): Float32

功能:此函数用于计算浮点数的反正切函数值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的反正切函数值

func atan

public func atan(x: Float16): Float16

功能:此函数用于计算浮点数的反正切函数值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的反正切函数值

func sinh

public func sinh(x: Float64): Float64

功能:此函数用于计算浮点数的双曲正弦函数值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的双曲正弦函数值

func sinh

public func sinh(x: Float32): Float32

功能:此函数用于计算浮点数的双曲正弦函数值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的双曲正弦函数值

func sinh

public func sinh(x: Float16): Float16

功能:此函数用于计算浮点数的双曲正弦函数值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的双曲正弦函数值

func cosh

public func cosh(x: Float64): Float64

功能:此函数用于计算浮点数的双曲余弦函数值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的双曲余弦函数值

func cosh

public func cosh(x: Float32): Float32

功能:此函数用于计算浮点数的双曲余弦函数值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的双曲余弦函数值

func cosh

public func cosh(x: Float16): Float16

功能:此函数用于计算浮点数的双曲余弦函数值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的双曲余弦函数值

func tanh

public func tanh(x: Float64): Float64

功能:此函数用于计算浮点数的双曲正切函数值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的双曲正切函数值

func tanh

public func tanh(x: Float32): Float32

功能:此函数用于计算浮点数的双曲正切函数值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的双曲正切函数值

func tanh

public func tanh(x: Float16): Float16

功能:此函数用于计算浮点数的双曲正切函数值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的双曲正切函数值

func asinh

public func asinh(x: Float64): Float64

功能:此函数用于计算浮点数的反双曲正弦函数值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的反双曲正弦函数值

func asinh

public func asinh(x: Float32): Float32

功能:此函数用于计算浮点数的反双曲正弦函数值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的反双曲正弦函数值

func asinh

public func asinh(x: Float16): Float16

功能:此函数用于计算浮点数的反双曲正弦函数值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的反双曲正弦函数值

func acosh

public func acosh(x: Float64): Float64

功能:此函数用于计算浮点数的反双曲余弦函数值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的反双曲余弦函数值

异常:

  • IllegalArgumentException:当参数 x 小于 1.0 时,抛出异常

func acosh

public func acosh(x: Float32): Float32

功能:此函数用于计算浮点数的反双曲余弦函数值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的反双曲余弦函数值

异常:

  • IllegalArgumentException:当参数 x 小于 1.0 时,抛出异常

func acosh

public func acosh(x: Float16): Float16

功能:此函数用于计算浮点数的反双曲余弦函数值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的反双曲余弦函数值

异常:

  • IllegalArgumentException:当参数 x 小于 1.0 时,抛出异常

func atanh

public func atanh(x: Float64): Float64

功能:此函数用于计算浮点数的反双曲正切函数值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的反双曲正切函数值

异常:

  • IllegalArgumentException:当参数 x 大于等于 1.0 或小于等于 -1.0 时,抛出异常

func atanh

public func atanh(x: Float32): Float32

功能:此函数用于计算浮点数的反双曲正切函数值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的反双曲正切函数值

异常:

  • IllegalArgumentException:当参数 x 大于等于 1.0 或小于等于 -1.0 时,抛出异常

func atanh

public func atanh(x: Float16): Float16

功能:此函数用于计算浮点数的反双曲正切函数值。

参数:

  • x:传入一个浮点数

返回值:返回传入浮点数的反双曲正切函数值

异常:

  • IllegalArgumentException:当参数 x 大于等于 1.0 或小于等于 -1.0 时,抛出异常

func round

public func round(x: Float64): Float64

功能:此函数采用 IEEE-754 的向最近舍入规则,计算浮点数的舍入值。如果该浮点数有两个最近整数,则向偶数舍入。

参数:

  • x:传入一个浮点数

返回值:返回浮点数向最近整数方向的舍入值。如果该浮点数有两个最近整数,则向偶数舍入

func round

public func round(x: Float32): Float32

功能:此函数采用 IEEE-754 的向最近舍入规则,计算浮点数的舍入值。如果该浮点数有两个最近整数,则向偶数舍入。

参数:

  • x:传入一个浮点数

返回值:返回浮点数向最近整数方向的舍入值。如果该浮点数有两个最近整数,则向偶数舍入

func round

public func round(x: Float16): Float16

功能:此函数采用 IEEE-754 的向最近舍入规则,计算浮点数的舍入值。如果该浮点数有两个最近整数,则向偶数舍入。

参数:

  • x:传入一个浮点数

返回值:返回浮点数向最近整数方向的舍入值。如果该浮点数有两个最近整数,则向偶数舍入

示例

rotate 函数的位旋转运算 1

下面是 rotate 函数的位旋转运算示例:

代码如下:

from std import math.rotate

main(): Unit {
    let a: Int8 = rotate(Int8(92), Int8(4))
    /* a=-59 */
    println("a=${a}")
}

运行结果如下:

a=-59

rotate 函数的位旋转运算 2

下面是 rotate 函数的位旋转运算示例:

代码如下:

from std import math.rotate

main(): Unit {
    let a: Int32 = rotate(Int32(1), Int8(4))
    /* a=16 */
    println("a=${a}")
}

运行结果如下:

a=16

clamp 范围截断函数

下面是 clamp 范围截断函数示例:

代码如下:

from std import math.clamp

main(): Unit {
    let min: Float16 = -0.123
    let max: Float16 = 0.123
    let v: Float16 = 0.121
    let c = clamp(v, min, max)
    /* true */
    print("${c==v}")
    let min2: Float16 = -0.999
    let max2: Float16 = 10.123
    let v2: Float16 = 11.121
    let c2 = clamp(v2, min2, max2)
    /* true */
    print("${c2==max2}")
    let min3: Float16 = -0.999
    let max3: Float16 = 10.123
    let v3: Float16 = -1.121
    let c3 = clamp(v3, min3, max3)
    /* true */
    print("${c3==min3}")
}

运行结果如下:

truetruetrue

最小公倍数函数

下面是最小公倍数函数示例:

代码如下:

from std import math.lcm

main(): Unit {
    let a: Int8 = lcm(Int8(-3), Int8(5))
    /* a=15 */
    println("a=${a}")
}

运行结果如下:

a=15

最大公约数函数

下面是最大公约数函数示例:

代码如下:

from std import math.gcd

main(): Unit {
    let c2 = gcd(0, -60)
    /* 60 */
    println("c2=${c2}")
    let c4 = gcd(-33, 27)
    /* 3 */
    print("c4=${c4}")
}

运行结果如下:

c2=60
c4=3

math.numeric 包

介绍

math.numeric 包对基础类型可表达范围之外提供扩展能力,当前支持大整数(BigInt)、高精度十进制数(Decimal)类型,提供常见的数学运算能力。

主要接口

struct BigInt

public struct BigInt <: Comparable<BigInt> & Hashable & ToString {
    public init(bytes: Array<Byte>)
    public init(sign: Bool, magnitude: Array<Byte>)
    public init(n: Int8)
    public init(n: Int16)
    public init(n: Int32)
    public init(n: Int64)
    public init(n: IntNative)
    public init(n: UInt8)
    public init(n: UInt16)
    public init(n: UInt32)
    public init(n: UInt64)
    public init(n: UIntNative)
    public init(sign: Bool, bitLen: Int64, rand!: Random = Random())
    public init(s: String, base!: Int64 = 10)
    public static func randomProbablePrime(bitLen: Int64, certainty: UInt64, rand!: Random = Random()): BigInt
}

BigInt 定义为任意精度(二进制)的有符号整数。仓颉的 struct BigInt 用于任意精度有符号整数的计算,类型转换等。

init
public init(bytes: Array<Byte>)

功能: 通过大端的 Byte 数组以补码形式构建 BigInt。

参数:

  • bytes:大端二进制补码数组,数组长度不能为空

异常:

  • IllegalArgumentException:当传入空数组时,抛此异常
init
public init(sign: Bool, magnitude: Array<Byte>)

功能:通过符号位和真值的绝对值来构造 BigInt。视空数组为 0。

参数:

  • sign:符号。true 表示非负数,false 表示负数

  • magnitude:真值绝对值的二进制原码

异常:

  • IllegalArgumentException:当 sign 为 false 且传入的数组为 0 时,抛此异常
init
public init(n: Int8)

功能:通过有符号整数来构建 BigInt。

参数:

  • n:有符号整数
init
public init(n: Int16)

功能:通过有符号整数来构建 BigInt。

参数:

  • n:有符号整数
init
public init(n: Int32)

功能:通过有符号整数来构建 BigInt。

参数:

  • n:有符号整数
init
public init(n: Int64)

功能:通过有符号整数来构建 BigInt。

参数:

  • n:有符号整数
init
public init(n: IntNative)

功能:通过有符号整数来构建 BigInt。

参数:

  • n:有符号整数
init
public init(n: UInt8)

功能:通过无符号整数来构建 BigInt。

参数:

  • n:无符号整数
init
public init(n: UInt16)

功能:通过无符号整数来构建 BigInt。

参数:

  • n:无符号整数
init
public init(n: UInt32)

功能:通过无符号整数来构建 BigInt。

参数:

  • n:无符号整数
init
public init(n: UInt64)

功能:通过无符号整数来构建 BigInt。

参数:

  • n:无符号整数
init
public init(n: UIntNative)

功能:通过无符号整数来构建 BigInt。

参数:

  • n:无符号整数
init
public init(sign: Bool, bitLen: Int64, rand!: Random = Random())

功能:通过指定正负,bit 长度,和随机数种子来构建一个随机的 BigInt。bit 长度需要大于 0。

参数:

  • sign:指定随机 BigInt 的正负

  • bitLen:指定随机 BigInt 的 bit 长度上限

  • rand:指定的随机数种子

异常:

  • IllegalArgumentException:如果指定的 bit 长度小于等于 0,则抛此异常
init
public init(s: String, base!: Int64 = 10)

功能:通过字符串和进制来构建 BigInt。支持 2 进制到 36 进制。字符串的规则如下:

IntegerString : (SignString)? ValueString

SignString : + | -

ValueString : digit digits

digit : '0' ~ '9' | 'A' ~ 'Z' | 'a' ~ 'z'

如果 digit 在 '0' ~ '9' 内, 需要满足 (digit - '0') < base;

如果 digit 在 'A' ~ 'Z' 内, 需要满足 (digit - 'A') + 10 < base;

如果 digit 在 'a' ~ 'z' 内, 需要满足 (digit - 'A') + 10 < base。

参数:

  • s:字符串,用来构建 BigInt 的字符串。字符串规则为,开头可选一个正号(+)或者负号(-)。接下来必选非空阿拉伯数字或大小写拉丁字母的字符序列,大小写字符含义一样,'a' 和 'A' 的大小等于十进制的 10, 'b' 和 'B' 的大小等于十进制的 11, 以此类推。序列中的字符大小不得大于等于进制大小。如果入参字符串不符合上述要求,则抛出 IllegalArgumentException

  • base:进制,字符串所表示的进制,范围为 [2, 36]

异常:

  • IllegalArgumentException:如果入参字符串不符合上述规则,或入参进制不在 [2, 36] 区间内,抛此异常
func randomProbablePrime
public static func randomProbablePrime(bitLen: Int64, certainty: UInt64, rand!: Random = Random()): BigInt

功能:通过可选的随机数种子构建一个随机的 BigInt 素数,素数的 bit 长度不超过入参 bitLen。显然,素数必定是大于等于 2 的整数,因此 bitLen 必须大于等于 2。素数检测使用 Miller-Rabin 素数测试算法。Miller-Rabin 测试会有概率将一个合数判定为素数,其出错概率随着入参 certainty 的增加而减少。

参数:

  • bitLen:所要生成的随机素数的 bit 长度的上限

  • certainty:生成的随机素数通过 Miller-Rabin 素数测试算法的次数,通过的次数越多,将合数误判为素数的概率越低

  • rand:指定的随机数种子

返回值:返回生成的随机素数

异常:

  • IllegalArgumentException:如果指定的 bit 长度小于等于 1,则抛此异常
prop sign
public prop sign: Int64

功能:获取此 BigInt 的符号。如果此 BigInt 大于 0,则返回 1;等于 0,则返回 0;小于 0,则返回 -1。

prop bitLen
public prop bitLen: Int64

功能:获取此 BigInt 的最短 bit 长度。如 -3 (101) 返回 3,-1 (11) 返回 2,0 (0) 返回 1。

func testBit
public func testBit(index: Int64): Bool

功能:返回指定位置的 bit 信息。如果指定位置的 bit 为 0,则返回 false;为 1,则返回 true。

参数:

  • index:需要知道的 bit 的索引。index 需要大于等于 0

返回值:指定位置的 bit 信息

异常:

  • IllegalArgumentException:如果入参 index 小于 0,则抛此异常
func lowestOneBit
public func lowestOneBit(): Int64

功能:返回为 1 的最低位的 bit 的位置。

返回值:返回为 1 的最低位的 bit 的位置。如果 bit 全为 0,则返回 -1

func setBit
public func setBit(index: Int64): BigInt

功能:通过将指定索引位置的 bit 修改为 1 来构造一个新 BigInt。

参数:

  • index:需要设置的 bit 位置的索引。index 需要大于等于 0

返回值:一个新的 BigInt,它是将原 BigInt index 处的 bit 改为 1 的产物

异常:

  • IllegalArgumentException:如果入参 index 小于 0,则抛此异常
func clearBit
public func clearBit(index: Int64): BigInt

功能:通过将指定索引位置的 bit 修改为 0 来构造一个新 BigInt。

参数:

  • index:需要设置的 bit 位置的索引。index 需要大于等于 0

返回值:一个新的 BigInt,它是将原 BigInt index 处的 bit 改为 0 的产物

异常:

  • IllegalArgumentException:如果入参 index 小于 0,则抛此异常
func flipBit
public func flipBit(index: Int64): BigInt

功能:通过翻转指定索引位置的 bit 来构造一个新 BigInt。

参数:

  • index:需要翻转的 bit 位置的索引。index 需要大于等于 0

返回值:一个新的 BigInt,它是将原 BigInt index 处的 bit 翻转后的产物

异常:

  • IllegalArgumentException:如果入参 index 小于 0,则抛此异常
func isProbablePrime
public func isProbablePrime(certainty: UInt64): Bool

功能:判断一个数是不是素数,使用了 Miller-Rabin 测试算法,此算法的准确率会随着 certainty 参数的增加而增加。如果该数是素数,那么 Miller-Rabin 测试必定返回 true;如果该数是合数(期待返回 false),那么会有低于 $1/4^{certainty}$ 概率返回 true。注意,素数只对大于等于 2 的正整数有意义,即负数,0,1 都不是素数。

参数:

  • certainty:需要执行 Miller-Rabin 测试的次数,注意,如果测试次数为 0,表示不测试,那么总是返回 true(即不是素数的数也必定返回 true)

返回值:测试该数是否是素数的结果,如果是,则返回 true;如果不是,则返回 false

operator func +
public operator func +(that: BigInt): BigInt

功能:与另一个 BigInt 相加,返回结果。

参数:

  • that:另外一个 BigInt

返回值:一个新 BigInt,它是此 BigInt 与另外一个 BigInt 相加后的结果

operator func -
public operator func -(that: BigInt): BigInt

功能:与另一个 BigInt 相减,返回结果。

参数:

  • that:另外一个 BigInt

返回值:一个新 BigInt,它是此 BigInt 与另外一个 BigInt 相减后的结果

operator func *
public operator func *(that: BigInt): BigInt

功能:与另一个 BigInt 相乘,返回结果。

参数:

  • that:另外一个 BigInt

返回值:一个新 BigInt,它是此 BigInt 与另外一个 BigInt 相乘后的结果

operator func /
public operator func /(that: BigInt): BigInt

功能:与另一个 BigInt 相除,返回结果。此除法运算的行为与基础类型保持一致,即结果向靠近 0 的方向取整。

参数:

  • that:另外一个 BigInt。入参不得为 0

返回值:一个新 BigInt,它是此 BigInt 与另外一个 BigInt 相除后的结果,结果向靠近 0 的方向取整

异常:

  • ArithmeticException:除数为 0 抛此异常
operator func %
public operator func %(that: BigInt): BigInt

功能:与另一个 BigInt 相模,返回结果。此取模运算的行为与基础类型保持一致,即符号与被除数保持一致。

参数:

  • that:另外一个 BigInt。入参不得为 0

返回值:一个新 BigInt,它是此 BigInt 与另外一个 BigInt 相模后的结果,其符号与被除数保持一致

异常:

  • ArithmeticException:除数为 0 抛此异常
func divAndMod
public func divAndMod(that: BigInt): (BigInt, BigInt)

功能:与另一个 BigInt 相除,返回商和模。此除法运算的行为与基础类型保持一致,即商向靠近 0 的方向取整,模的符号与被除数保持一致。

参数:

  • that:另外一个 BigInt。入参不得为 0

返回值:商和模

异常:

  • ArithmeticException:除数为 0 抛此异常
func quo
public func quo(that: BigInt): BigInt

功能:与另一个 BigInt 相除,返回结果。此除法运算的行为与运算符重载函数区别于,如果被除数为负数,此函数的结果向着远离 0 的方向取整,保证余数大于等于 0。

参数:

  • that:另外一个 BigInt。入参不得为 0

返回值:一个新 BigInt,它是此 BigInt 与另外一个 BigInt 相除后的结果

异常:

  • ArithmeticException:除数为 0 抛此异常
func rem
public func rem(that: BigInt): BigInt

功能:与另一个 BigInt 相除,返回余数。余数的结果总是大于等于 0。

参数:

  • that:另外一个 BigInt。入参不得为 0

返回值:一个新 BigInt,它是此 BigInt 与另外一个 BigInt 相除后的余数

异常:

  • ArithmeticException:除数为 0 抛此异常
func quoAndRem
public func quoAndRem(that: BigInt): (BigInt, BigInt)

功能:与另一个 BigInt 相除,返回商和余数。此除法运算的行为与 divAndMod 函数区别于,如果被除数为负数,此函数的结果向着远离 0 的方向取整,保证余数总是大于等于 0。

参数:

  • that:另外一个 BigInt。入参不得为 0

返回值:商和余数

异常:

  • ArithmeticException:除数为 0 抛此异常
func modInverse
public func modInverse(that: BigInt): BigInt

功能:求模逆元,使得结果 r 满足 (this * r) % that == 1。显然,this 和 that 必须互质。当 that 为 正负 1 时,结果总是 0。

参数:

  • that:另外一个 BigInt。入参不得为 0,且需要与 this 互质

返回值:返回模逆元

异常:

  • IllegalArgumentException:当 this 和 that 不互质或 that 为 0 时,抛此异常
operator func -
public operator func -(): BigInt

功能:返回此 BigInt 的相反数。

返回值:此 BigInt 的相反数

operator func **
public operator func **(n: UInt64): BigInt

功能:计算此 BigInt 的 n 次幂,返回计算结果。

参数:

  • n:指数参数

返回值:幂运算结果

func modPow
public func modPow(n: BigInt, m!: ?BigInt = None): BigInt

功能:计算此 BigInt 的 n 次幂模 m 的结果,并返回。模的规则与基础类型一致,即模的符号与被除数保持一致。

参数:

  • n:指数参数,必须为非负数

  • m:除数,此入参不得为 0

返回值:乘方后取模的运算结果

异常:

  • ArithmeticException:除数为 0 抛此异常

  • IllegalArgumentException:指数为负数时抛此异常

operator func &
public operator func &(that: BigInt): BigInt

功能:与另一个 BigInt 按位与,返回计算结果。

参数:

  • that:另外一个 BigInt

返回值:返回与另一个 BigInt 的按位与的结果

operator func |
public operator func |(that: BigInt): BigInt

功能:与另一个 BigInt 按位或,返回计算结果。

参数:

  • that:另外一个 BigInt

返回值:返回与另一个 BigInt 的按位或的结果

operator func ^
public operator func ^(that: BigInt): BigInt

功能:与另一个 BigInt 按位异或,返回计算结果。

参数:

  • that:另外一个 BigInt

返回值:返回与另一个 BigInt 的按位异或的结果

operator func !
public operator func !(): BigInt

功能:按位非,返回结果。

返回值:返回此 BigInt 按位非的结果

operator func >>
public operator func >>(n: Int64): BigInt

功能:右移 n 位,并返回移位后的结果。

参数:

  • n:右移 n 位,n 需要大于等于 0

返回值:返回此 BigInt 右移 n 位的结果

异常:

  • ArithmeticException:入参小于 0 时抛此异常
operator func <<
public operator func <<(n: Int64): BigInt

功能:左移 n 位,并返回移位后的结果。

参数:

  • n:左移 n 位,n 需要大于等于 0

返回值:返回此 BigInt 左移 n 位的结果

异常:

  • ArithmeticException:入参小于 0 时抛此异常
operator func ==
public operator func ==(that: BigInt): Bool

功能:判断两个 BigInt 是否相等。

参数:

  • that:另一个 BigInt

返回值:判等的结果。相等返回 true,不等返回 false

operator func !=
public operator func !=(that: BigInt): Bool

功能:判断两个 BigInt 是否不等。

参数:

  • that:另一个 BigInt

返回值:判不等的结果。不等返回 true,相等返回 false

operator func >
public operator func >(that: BigInt): Bool

功能:判断此 BigInt 是否大于另一个 BigInt

参数:

  • that:另一个 BigInt

返回值:比较的结果。大于返回 true,否则返回 false

operator func >=
public operator func >=(that: BigInt): Bool

功能:判断此 BigInt 是否大于等于另一个 BigInt

参数:

  • that:另一个 BigInt

返回值:比较的结果。大于等于返回 true,否则返回 false

operator func <
public operator func <(that: BigInt): Bool

功能:判断此 BigInt 是否小于另一个 BigInt

参数:

  • that:另一个 BigInt

返回值:比较的结果。小于返回 true,否则返回 false

operator func <=
public operator func <=(that: BigInt): Bool

功能:判断此 BigInt 是否小于等于另一个 BigInt

参数:

  • that:另一个 BigInt

返回值:比较的结果。小于等于返回 true,否则返回 false

func compare
public func compare(that: BigInt): Ordering

功能:判断 BigInt 与另一个 BigInt 的关系。如果等于,返回 Ordering.EQ;如果小于,返回 Ordering.LT;如果大于,返回 Ordering.GT。

参数:

  • that:另一个 BigInt 对象

返回值:返回此 BigInt 与另一个 BigInt 的关系。如果等于,返回 Ordering.EQ;如果小于,返回 Ordering.LT;如果大于,返回 Ordering.GT

func hashCode
public func hashCode(): Int64

功能:计算并返回此 BigInt 的哈希值。

返回值:返回此 BigInt 的哈希值

func toString
public func toString(): String

功能:计算并返回此 BigInt 的十进制字符串表示。

返回值:返回此 BigInt 的十进制字符串

func toBytes
public func toBytes(): Array<Byte>

功能:计算并返回此 BigInt 的大端补码字节数组。字节数组最低索引的最低位为符号位,如 128 返回 [0, 128](符号位为 0),-128 返回 [128](符号位为 1)。

返回值:返回此 BigInt 的大端补码字节数组

func toString
public func toString(base: Int64): String

功能:计算并返回此 BigInt 的任意进制字符串表示。

参数:

  • base:进制,字符串所表示的进制,范围为 [2, 36]

返回值:返回此 BigInt 的 base 进制字符串

func toInt8
public func toInt8(overflowHandling!: OverflowStrategy = throwing): Int8

功能:将当前 BigInt 对象转化为 Int8 类型,支持自定义溢出策略。

参数:

  • overflowHandling:转换溢出策略

返回值:返回转换后的 Int8

异常:

  • OverflowException:当不指定溢出策略或溢出策略为 throwing 转换溢出时,抛出此异常
func toInt16
public func toInt16(overflowHandling!: OverflowStrategy = throwing): Int16

功能:将当前 BigInt 对象转化为 Int16 类型,支持自定义溢出策略。

参数:

  • overflowHandling:转换溢出策略

返回值:返回转换后的 Int16

异常:

  • OverflowException:当不指定溢出策略或溢出策略为 throwing 转换溢出时,抛出此异常
func toInt32
public func toInt32(overflowHandling!: OverflowStrategy = throwing): Int32

功能:将当前 BigInt 对象转化为 Int32 类型,支持自定义溢出策略。

参数:

  • overflowHandling:转换溢出策略

返回值:返回转换后的 Int32

异常:

  • OverflowException:当不指定溢出策略或溢出策略为 throwing 转换溢出时,抛出此异常
func toInt64
public func toInt64(overflowHandling!: OverflowStrategy = throwing): Int64

功能:将当前 BigInt 对象转化为 Int64 类型,支持自定义溢出策略。

参数:

  • overflowHandling:转换溢出策略

返回值:返回转换后的 Int64

异常:

  • OverflowException:当不指定溢出策略或溢出策略为 throwing 转换溢出时,抛出此异常
func toIntNative
public func toIntNative(overflowHandling!: OverflowStrategy = throwing): IntNative

功能:将当前 BigInt 对象转化为 IntNative 类型,支持自定义溢出策略。

参数:

  • overflowHandling:转换溢出策略

返回值:返回转换后的 IntNative

异常:

  • OverflowException:当不指定溢出策略或溢出策略为 throwing 转换溢出时,抛出此异常
func toUInt8
public func toUInt8(overflowHandling!: OverflowStrategy = throwing): UInt8

功能:将当前 BigInt 对象转化为 UInt8 类型,支持自定义溢出策略。

参数:

  • overflowHandling:转换溢出策略

返回值:返回转换后的 UInt8

异常:

  • OverflowException:当不指定溢出策略或溢出策略为 throwing 转换溢出时,抛出此异常
func toUInt16
public func toUInt16(overflowHandling!: OverflowStrategy = throwing): UInt16

功能:将当前 BigInt 对象转化为 UInt16 类型,支持自定义溢出策略。

参数:

  • overflowHandling:转换溢出策略

返回值:返回转换后的 UInt16

异常:

  • OverflowException:当不指定溢出策略或溢出策略为 throwing 转换溢出时,抛出此异常
func toUInt32
public func toUInt32(overflowHandling!: OverflowStrategy = throwing): UInt32

功能:将当前 BigInt 对象转化为 UInt32 类型,支持自定义溢出策略。

参数:

  • overflowHandling:转换溢出策略

返回值:返回转换后的 UInt32

异常:

  • OverflowException:当不指定溢出策略或溢出策略为 throwing 转换溢出时,抛出此异常
func toUInt64
public func toUInt64(overflowHandling!: OverflowStrategy = throwing): UInt64

功能:将当前 BigInt 对象转化为 UInt64 类型,支持自定义溢出策略。

参数:

  • overflowHandling:转换溢出策略

返回值:返回转换后的 UInt64

异常:

  • OverflowException:当不指定溢出策略或溢出策略为 throwing 转换溢出时,抛出此异常
func toUIntNative
public func toUIntNative(overflowHandling!: OverflowStrategy = throwing): UIntNative

功能:将当前 BigInt 对象转化为 UIntNative 类型,支持自定义溢出策略。

参数:

  • overflowHandling:转换溢出策略

返回值:返回转换后的 UIntNative

异常:

  • OverflowException:当不指定溢出策略或溢出策略为 throwing 转换溢出时,抛出此异常

func abs

public func abs(i: BigInt): BigInt

功能:计算并返回入参 BigInt 的绝对值。

参数:

  • i:需要计算绝对值的 BigInt

返回值:返回入参 BigInt 的绝对值

func sqrt

public func sqrt(i: BigInt): BigInt

功能:计算并返回入参 BigInt 的算数平方根,向下取整。

参数:

  • i:需要计算算数平方根的 BigInt,入参需要非负

返回值:返回入参 BigInt 的算数平方根,向下取整

异常:

  • IllegalArgumentException:如果入参为负数,则抛此异常

func gcd

public func gcd(i1: BigInt, i2: BigInt): BigInt

功能:计算并返回 i1 和 i2 的最大公约数,总是返回非负数(相当于绝对值的最大公约数)。

参数:

  • i1:需要计算最大公约数的第一个入参

  • i2:需要计算最大公约数的第二个入参

返回值:返回 i1 和 i2 的最大公约数,总是返回非负数(相当于绝对值的最大公约数)

func lcm

public func lcm(i1: BigInt, i2: BigInt): BigInt

功能:计算并返回 i1 和 i2 的最小公倍数,除了入参有 0 时返回 0 外,总是返回正数(相当于绝对值的最小公倍数)。

参数:

  • i1:需要计算最小公倍数的第一个入参

  • i2:需要计算最小公倍数的第二个入参

返回值:返回 i1 和 i2 的最小公倍数,当入参有 0 时返回 0,其余情况返回正数(相当于绝对值的最小公倍数)

func max

public func max(i1: BigInt, i2: BigInt): BigInt

功能:计算并返回两个 BigInt 中较大的那个。

参数:

  • i1:需要比较的 BigInt

  • i2:需要比较的 BigInt

返回值:返回 i1,i2 中较大的 BigInt

func min

public func min(i1: BigInt, i2: BigInt): BigInt

功能:计算并返回两个 BigInt 中较小的那个。

参数:

  • i1:需要比较的 BigInt

  • i2:需要比较的 BigInt

返回值:返回 i1,i2 中较小的 BigInt

func countOne

public func countOne(i: BigInt): Int64

功能:计算并返回入参 BigInt 的二进制补码中 1 的个数。

参数:

  • i:需要计算二进制补码中 1 的个数的 BigInt

返回值:返回入参 BigInt 的二进制补码中 1 的个数

struct DecimalContext

public struct DecimalContext {
    public init(precision: Int64, roundingMode: RoundingMode)
}

DecimalContext 对象作用于用户对 Decimal 操作过程中,对生成结果指定上下文,设定结果的精度与对应舍入规则。

init
public init(precision: Int64, roundingMode: RoundingMode)

功能:指定精度与舍入规则构建生成上下文对象,可作用于 Decimal 操作结果。

参数:

  • precision:精度值,限制 Decimal 结果有效数值位数

  • roundingMode:舍入规则,Decimal 结果有效位超出精度限制时舍入操作遵循该指定规则

异常:

  • IllegalArgumentException:当传入精度小于0时,抛出此异常
precision
public let precision: Int64

功能:获取上下文中指定的精度值。

roundingMode
public let roundingMode: RoundingMode

功能:获取上下文中指定的舍入规则。

enum RoundingMode

public enum RoundingMode {
    | UP
    | DOWN
    | CEILING
    | FLOOR
    | HALF_UP
    | HALF_EVEN
}

舍入规则枚举类,共包含 6 中舍入规则。除包含 IEEE 754 浮点数规定约定的 5 种舍入规则外,提供使用较多的 “四舍五入” 舍入规则。

十进制数UPDOWNCEILINGFLOORHALF_UPHALF_EVEN
7.5878788
4.5545454
-1.1-2-1-1-2-1-1
-4.5-5-4-4-5-5-4
-7.5-8-7-7-8-8-8
UP
UP

功能:向远离零的方向舍入。

DOWN
DOWN

功能:向靠近零的方向舍入。

CEILING
CEILING

功能:向正无穷方向舍入。

FLOOR
FLOOR

功能:向负无穷方向舍入。

HALF_UP
HALF_UP

功能:四舍五入。

HALF_EVEN
HALF_EVEN

功能:四舍六入五取偶,又称 “银行家舍入”。

enum OverflowStrategy

public enum OverflowStrategy {
    | throwing
    | wrapping
    | saturating
}

溢出策略枚举类,共包含 3 种溢出策略。BigInt 类型、Decimal 类型转换为整数类型时,允许指定不同的溢出处理策略。

throwing
throwing

功能:出现溢出,抛出异常。

wrapping
wrapping

功能:出现溢出,高位截断。

saturating
saturating

功能:出现溢出,当前值大于目标类型的 MAX 值,返回目标类型 MAX 值,当前值小于目标类型的 MIN 值,返回目标类型 MIN 值。

struct Decimal

public struct Decimal <: Comparable<Decimal> & Hashable & ToString {
    public init(val: BigInt, scale: Int32, ctx!: DecimalContext = defaultDecimalContext)
    public init(val: String, ctx!: DecimalContext = defaultDecimalContext)
    public init(val: Int8, ctx!: DecimalContext = defaultDecimalContext)
    public init(val: Int16, ctx!: DecimalContext = defaultDecimalContext)
    public init(val: Int32, ctx!: DecimalContext = defaultDecimalContext)
    public init(val: Int64, ctx!: DecimalContext = defaultDecimalContext)
    public init(val: IntNative, ctx!: DecimalContext = defaultDecimalContext)
    public init(val: UInt8, ctx!: DecimalContext = defaultDecimalContext)
    public init(val: UInt16, ctx!: DecimalContext = defaultDecimalContext)
    public init(val: UInt32, ctx!: DecimalContext = defaultDecimalContext)
    public init(val: UInt64, ctx!: DecimalContext = defaultDecimalContext)
    public init(val: UIntNative, ctx!: DecimalContext = defaultDecimalContext)
    public init(val: Float16, ctx!: DecimalContext = defaultDecimalContext)
    public init(val: Float32, ctx!: DecimalContext = defaultDecimalContext)
    public init(val: Float64, ctx!: DecimalContext = defaultDecimalContext)
}

Decimal 用于表示任意精度的有符号的十进制数。允许操作过程指定上下文,指定结果精度及舍入规则。提供基础类型 (Int、UInt、String、Float等) 与 BigInt 类型互相转换能力,支持 Decimal 对象基本属性查询等能力,支持基础数学运算操作,提供对象比较、hash、字符串打印等基础能力。

init
public init(val: BigInt, scale: Int32, ctx!: DecimalContext = defaultDecimalContext)

功能:通过有符号大整数 BigInt 和标度值构建 Deciaml 对象。允许自行指定上下文,对构建结果限制精度,按指定舍入规则进行舍入操作。默认采用 defaultDecimalContext 即无限精度进行构建。

参数:

  • val:有符号大整数值

  • scale:标度值

  • ctx:Deciaml 上下文

异常:

  • OverflowException:当构建值范围超过 [-(maxValue(ctx.precision) * (10 ^ {Int32.MAX})), maxValue(ctx.precision) * (10 ^ {Int32.MAX})] 时,抛出此异常
init
public init(val: String, ctx!: DecimalContext = defaultDecimalContext)

功能:通过规定格式字符串构建 Decimal 对象。允许自行指定上下文,对构建结果限制精度,按指定舍入规则进行舍入操作。默认采用 defaultDecimalContext 即无限精度进行构建。 字符串需满足格式如下: Decimal 字符串: (SignString)? ValueString (ExponentString)? SignString: + | - ValueString:IntegerPart.(FractionPart)? | .FractionPart | IntegerPart IntegerPart:Digits FractionPart:Digits ExponentString:ExponentIndicator (SignString)? IntegerPart ExponentIndicator:e | E Digits:Digit | Digit Digits Digit:0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

参数:

  • val:规定格式字符串

  • ctx:Deciaml 上下文

异常:

  • IllegalArgumentException:当入参字符串不满足规定格式时,抛此异常

  • OverflowException:当构建值范围超过 [-(maxValue(ctx.precision) * (10 ^ {Int32.MAX})), maxValue(ctx.precision) * (10 ^ {Int32.MAX})] 时,抛出此异常

init
public init(val: Int8, ctx!: DecimalContext = defaultDecimalContext)

功能:通过 8 位有符号整数构建 Decimal 对象。允许自行指定上下文,对构建结果限制精度,按指定舍入规则进行舍入操作。默认采用 defaultDecimalContext 即无限精度进行构建。

参数:

  • val:8 位有符号整数

  • ctx:Decimal 上下文

init
public init(val: Int16, ctx!: DecimalContext = defaultDecimalContext)

功能:通过 16 位有符号整数构建 Decimal 对象。允许自行指定上下文,对构建结果限制精度,按指定舍入规则进行舍入操作。默认采用 defaultDecimalContext 即无限精度进行构建。

参数:

  • val:16 位有符号整数

  • ctx:Decimal 上下文

init
public init(val: Int32, ctx!: DecimalContext = defaultDecimalContext)

功能:通过 32 位有符号整数构建 Decimal 对象。允许自行指定上下文,对构建结果限制精度,按指定舍入规则进行舍入操作。默认采用 defaultDecimalContext 即无限精度进行构建。

参数:

  • val:32 位有符号整数

  • ctx:Decimal 上下文

init
public init(val: Int64, ctx!: DecimalContext = defaultDecimalContext)

功能:通过 64 位有符号整数构建 Decimal 对象。允许自行指定上下文,对构建结果限制精度,按指定舍入规则进行舍入操作。默认采用 defaultDecimalContext 即无限精度进行构建。

参数:

  • val:64 位有符号整数

  • ctx:Decimal 上下文

init
public init(val: IntNative, ctx!: DecimalContext = defaultDecimalContext)

功能:通过 32 位或 64 位 (具体长度与平台相关) 有符号整数构建 Decimal 对象。允许自行指定上下文,对构建结果限制精度,按指定舍入规则进行舍入操作。默认采用 defaultDecimalContext 即无限精度进行构建。

参数:

  • val:32 位或 64位有符号整数

  • ctx:Decimal 上下文

init
public init(val: UInt8, ctx!: DecimalContext = defaultDecimalContext)

功能:通过 8 位无符号整数构建 Decimal 对象。允许自行指定上下文,对构建结果限制精度,按指定舍入规则进行舍入操作。默认采用 defaultDecimalContext 即无限精度进行构建。

参数:

  • val:8 位无符号整数

  • ctx:Decimal 上下文

init
public init(val: UInt16, ctx!: DecimalContext = defaultDecimalContext)

功能:通过 16 位无符号整数构建 Decimal 对象。允许自行指定上下文,对构建结果限制精度,按指定舍入规则进行舍入操作。默认采用 defaultDecimalContext 即无限精度进行构建。

参数:

  • val:16 位无符号整数

  • ctx:Decimal 上下文

init
public init(val: UInt32, ctx!: DecimalContext = defaultDecimalContext)

功能:通过 32 位无符号整数构建 Decimal 对象。允许自行指定上下文,对构建结果限制精度,按指定舍入规则进行舍入操作。默认采用 defaultDecimalContext 即无限精度进行构建。

参数:

  • val:32 位无符号整数

  • ctx:Decimal 上下文

init
public init(val: UInt64, ctx!: DecimalContext = defaultDecimalContext)

功能:通过 64 位无符号整数构建 Decimal 对象。允许自行指定上下文,对构建结果限制精度,按指定舍入规则进行舍入操作。默认采用 defaultDecimalContext 即无限精度进行构建。

参数:

  • val:64 位无符号整数

  • ctx:Decimal 上下文

init
public init(val: UIntNative, ctx!: DecimalContext = defaultDecimalContext)

功能:通过 32 位或 64 位 (具体长度与平台相关) 无符号整数构建 Decimal 对象。允许自行指定上下文,对构建结果限制精度,按指定舍入规则进行舍入操作。默认采用 defaultDecimalContext 即无限精度进行构建。

参数:

  • val:32 位或 64位无符号整数

  • ctx:Decimal 上下文

init
public init(val: Float16, ctx!: DecimalContext = defaultDecimalContext)

功能:通过 16 位有符号浮点数构建 Decimal 对象。允许自行指定上下文,对构建结果限制精度,按指定舍入规则进行舍入操作。默认采用 defaultDecimalContext 即无限精度进行构建。

注意:由于部分十进制小数无法通过二进制浮点数精确表示,此构造函数以精确值构建 Decimal 对象,传入浮点数值可能与最终构建 Decimal 对象字符串打印值不一致。

参数:

  • val:16 位有符号二进制浮点数

  • ctx:Decimal 上下文

异常:

  • IllegalArgumentException:当入参为 inf-infnan 时,抛出此异常
init
public init(val: Float32, ctx!: DecimalContext = defaultDecimalContext)

功能:通过 32 位有符号浮点数构建 Decimal 对象。允许自行指定上下文,对构建结果限制精度,按指定舍入规则进行舍入操作。默认采用 defaultDecimalContext 即无限精度进行构建。

注意:由于部分十进制小数无法通过二进制浮点数精确表示,此构造函数以精确值构建 Decimal 对象,传入浮点数值可能与最终构建 Decimal 对象字符串打印值不一致。

参数:

  • val:32 位有符号二进制浮点数

  • ctx:Decimal 上下文

异常:

  • IllegalArgumentException:当入参为 inf-infnan 时,抛出此异常
init
public init(val: Float64, ctx!: DecimalContext = defaultDecimalContext)

功能:通过 64 位有符号浮点数构建 Decimal 对象。允许自行指定上下文,对构建结果限制精度,按指定舍入规则进行舍入操作。默认采用 defaultDecimalContext 即无限精度进行构建。

注意:由于部分十进制小数无法通过二进制浮点数精确表示,此构造函数以精确值构建 Decimal 对象,传入浮点数值可能与最终构建 Decimal 对象字符串打印值不一致。

参数:

  • val:64 位有符号二进制浮点数

  • ctx:Decimal 上下文

异常:

  • IllegalArgumentException:当入参为 inf-infnan 时,抛出此异常
defaultDecimalContext
public static let defaultDecimalContext

功能:默认上下文,精度值为 0,舍入规则为 “银行家舍入”。即无精度限制,保留操作结果实际精度,在操作结果为无限小数场景下,默认遵循 IEEE 754-2019 decimal128 规则,精度保留 34 位 “银行家” 规则舍入。

返回值:DecimalContext 默认值

prop sign
public prop sign: Int64

功能:获取 Decimal 实例符号值。

  • Decimal 值大于 0,返回 1;
  • Decimal 值等于 0,返回 0;
  • Decimal 值小于 0,返回 -1。
prop scale
public prop scale: Int32

功能:获取 Decimal 标度值。

prop value
public prop value: BigInt

功能:获取 Decimal 无标度整数值,BigInt 承载。

prop precision
public prop precision: Int64

功能:获取 Decimal 精度值,即无标度整数部分十进制有效数字位数,非负数。

func add
public func add(d: Decimal): Decimal

功能:加法运算,加上入参 Decimal 对象,返回结果值。上下文默认 defaultDecimalContext 保留加合结果实际精度值。

参数:

  • d:Decimal 加数对象

返回值:生成一个新的 Decimal 对象,用于存储两个加数的加合结果值

异常:

  • OverflowException:当两个加数标度值相减值溢出时,抛出此异常
func add
public func add(d: Decimal, ctx: DecimalContext): Decimal

功能:加法运算,支持自定义运算上下文,加上入参 Decimal 对象,返回结果值,如果结果精度超过上下文指定精度,则根据指定的上下文对加合结果进行舍入。

参数:

  • d:Decimal 加数对象

  • ctx:Decimal 上下文

返回值:生成一个新的 Decimal 对象,用于存储两个加数的加合结果值

异常:

  • OverflowException:当两个加数标度值相减值溢出时,抛出此异常
operator func +
public operator func +(d: Decimal): Decimal

功能:加法运算,加法运算符重载,行为与 add 函数相同,加上入参 Decimal 对象,返回结果值。上下文默认 defaultDecimalContext 保留加合结果实际精度值。

参数:

  • d:Decimal 加数对象

返回值:生成一个新的 Decimal 对象,用于存储两个加数的加合结果值

异常:

  • OverflowException:当两个加数标度值相减溢出时,抛出此异常
func sub
public func sub(d: Decimal): Decimal

功能:减法运算,减去入参 Decimal 对象,返回结果值。上下文默认 defaultDecimalContext 保留减法运算结果实际精度值。

参数:

  • d:Decimal 减数对象

返回值:生成一个新的 Decimal 对象,用于存储减法运算结果值

异常:

  • OverflowException:当被减数与减数标度值相减溢出时,抛出此异常
func sub
public func sub(d: Decimal, ctx: DecimalContext): Decimal

功能:减法运算,支持自定义运算上下文,减去入参 Decimal 对象,返回结果值,如果结果精度超过上下文指定精度,则根据指定的上下文对减法运算结果进行舍入。

参数:

  • d:Decimal 减数对象

  • ctx:Decimal 上下文

返回值:生成一个新的 Decimal 对象,用于存储减法运算结果值

异常:

  • OverflowException:当被减数与减数标度值相减溢出时,抛出此异常
operator func -
public operator func -(d: Decimal): Decimal

功能:减法运算,减法运算符重载,行为与 sub 函数相同,减去入参 Decimal 对象,返回结果值。上下文默认 defaultDecimalContext 保留减法运算结果实际精度值。

参数:

  • d:Decimal 减数对象

返回值:生成一个新的 Decimal 对象,用于存储减法运算结果值

异常:

  • OverflowException:当被减数与减数标度值相减溢出时,抛出此异常
func mul
public func mul(d: Decimal): Decimal

功能:乘法运算,乘以入参 Decimal 对象,返回结果值。上下文默认 defaultDecimalContext 保留乘法运算结果实际精度值。

参数:

  • d:Decimal 乘数对象

返回值:生产一个新的 Decimal 对象,用于存储乘法运算结果值

异常:

  • OverflowException:当两个乘数标度值相加溢出时,抛出此异常
func mul
public func mul(d: Decimal, ctx: DecimalContext): Decimal

功能:乘法运算,支持自定义运算上下文,乘以入参 Decimal 对象,返回结果值,如果结果精度超过上下文指定精度,则根据指定的上下文对乘法运算结果进行舍入。

参数:

  • d:Decimal 乘数对象

返回值:生成一个新的 Decimal 对象,用于存储乘法运算结果值

异常:

  • OverflowException:当两个乘数标度值相加溢出时,抛出此异常
operator func *
public operator func *(d: Decimal): Decimal

功能:乘法运算,乘法运算符重载,行为与 mul 函数相同,乘以入参 Decimal 对象,返回结果值。上下文默认 defaultDecimalContext 保留乘法运算结果实际精度值。

参数:

  • d:Decimal 乘数对象

返回值:生成一个新的 Decimal 对象,用于存储乘法运算结果值

异常:

  • OverflowException:当两个乘数标度值相加溢出时,抛出此异常
func div
public func div(d: Decimal): Decimal

功能:除法运算,除以入参 Decimal 对象,返回结果值。上下文默认 defaultDecimalContext 保留除法运算结果实际精度值。

注意:结果为无限小数场景时,默认采用 IEEE 754-2019 decimal128 对结果进行舍入。

参数:

  • d:Decimal 除数对象

返回值:生成一个新的 Decimal 对象,用于存储除法运算结果值

异常:

  • IllegalArgumentException:当除数为 0 时,抛出此异常

  • OverflowException:当除法结果值范围超过 [-(maxValue(ctx.precision) * (10 ^ {Int32.MAX})), maxValue(ctx.precision) * (10 ^ {Int32.MAX})] 时,抛出此异常

func div
public func div(d: Decimal, ctx: DecimalContext): Decimal

功能:除法运算,支持自定义运算上下文,除以入参 Decimal 对象,返回结果值,如果结果精度超过上下文指定精度,则根据指定的上下文对除法运算结果进行舍入。

参数:

  • d:Decimal 除数对象

  • ctx:Decimal 上下文

返回值:生成一个新的 Decimal 对象,用于存储除法运算结果值

异常:

  • IllegalArgumentException:当除数为 0 时,抛出此异常

  • OverflowException:当除法结果值范围超过 [-(maxValue(ctx.precision) * (10 ^ {Int32.MAX})), maxValue(ctx.precision) * (10 ^ {Int32.MAX})] 时,抛出此异常

operator func /
public operator func /(d: Decimal): Decimal

功能:除法运算,除法运算符重载,行为与 div 函数相同,除以入参 Decimal 对象,返回结果值。上下文默认 defaultDecimalContext 保留除法运算结果实际精度值。

注意:结果为无限小数场景时,默认采用 IEEE 754-2019 decimal128 对结果进行舍入。

参数:

  • d:Decimal 除数对象

返回值:生成一个新的 Decimal 对象,用于存储除法运算结果值

异常:

  • IllegalArgumentException:当除数为 0 时,抛出此异常

  • OverflowException:当除法结果值范围超过 [-(maxValue(ctx.precision) * (10 ^ {Int32.MAX})), maxValue(ctx.precision) * (10 ^ {Int32.MAX})] 时,抛出此异常

func divAndRem
public func divAndRem(d: Decimal): (BigInt, Decimal)

功能:除法取商和余数运算,除以入参 Decimal 对象,返回整数商值和余数值。上下文默认 defaultDecimalContext 保留结果实际精度值。

参数:

  • d:Decimal 除数对象

返回值:生成一个元组对象,分别用于存储整数商值结果和余数结果值

异常:

  • IllegalArgumentException:当除数为 0 时,抛出此异常

  • OverflowException:当除法结果值范围超过 [-(maxValue(ctx.precision) * (10 ^ {Int32.MAX})), maxValue(ctx.precision) * (10 ^ {Int32.MAX})] 时,抛出此异常

func divAndRem
public func divAndRem(d: Decimal, ctx: DecimalContext): (BigInt, Decimal)

功能:除法取商和余数运算,支持自定义运算上下文,除以入参 Decimal 对象,返回整数商值和余数值。如果结果精度超过上下文指定精度,则根据指定的上下文对除法运算结果进行舍入。特别注意,这里传入的舍入规则是无效的,默认使用 RoundingMode.DOWN

参数:

  • d:Decimal 除数对象

  • ctx:Decimal 上下文

返回值:生成一个元组对象,分别用于存储整数商值结果和余数结果值

异常:

  • IllegalArgumentException:当除数为 0 时,抛出此异常

  • OverflowException:当除法结果值范围超过 [-(maxValue(ctx.precision) * (10 ^ {Int32.MAX})), maxValue(ctx.precision) * (10 ^ {Int32.MAX})] 时,抛出此异常

func neg
public func neg(): Decimal

功能:取反运算,对当前 Decimal 对象取反,返回结果值。上下文默认 defaultDecimalContext 保留取反运算结果实际精度值。

返回值:生成一个新的 Decimal 对象,用于存储取反结果值

func neg
public func neg(ctx: DecimalContext): Decimal

功能:取反运算,支持自定义运算上下文,对当前 Decimal 对象取反,返回结果值。如果结果精度超过上下文指定精度,则根据指定的上下文对取反运算结果进行舍入。

参数:

  • ctx:Decimal 上下文

返回值:生成一个新的 Decimal 对象,用于存储取反结果值

operator func -
public operator func -(): Decimal

功能:取反运算,一元负数运算符重载,行为与 neg 函数相同,对当前 Decimal 对象取反,返回结果值。上下文默认 defaultDecimalContext 保留取反运算结果实际精度值。

返回值:生成一个新的 Decimal 对象,用于存储取反结果值

operator func <
public operator func <(d: Decimal): Bool

功能:小于比较运算,小于运算符重载,判断入参 Decimal 对象是否小于当前对象,返回比较结果值。

参数:

  • d:Decimal 待比较对象

返回值:返回小于比较运算结果。当前对象小于入参时,返回 true,否则返回 false

operator func >
public operator func >(d: Decimal): Bool

功能:大于比较运算,大于运算符重载,判断入参 Decimal 对象是否大于当前对象,返回比较结果值。

参数:

  • d:Decimal 待比较对象

返回值:返回大于比较运算结果。当前对象大于入参时,返回 true,否则返回 false

operator func <=
public operator func <=(d: Decimal): Bool

功能:小于等于比较运算,小于等于运算符重载,判断入参 Decimal 对象是否小于等于当前对象,返回比较结果值。

参数:

  • d:Decimal 待比较对象

返回值:返回小于等于比较运算结果。当前对象小于等于入参时,返回 true,否则返回 false

operator func >=
public operator func >=(d: Decimal): Bool

功能:大于等于比较运算,大于等于运算符重载,判断入参 Decimal 对象是否大于等于当前对象,返回比较结果值。

参数:

  • d:Decimal 待比较对象

返回值:返回大于等于比较运算结果。当前对象大于等于入参时,返回 true,否则返回 false

operator func ==
public operator func ==(d: Decimal): Bool

功能:等于比较运算,等于运算符重载,判断入参 Decimal 对象与当前对象是否相等,返回比较结果值。

参数:

  • d:Decimal 待比较对象

返回值:返回等于比较运算结果。当前对象等于入参时,返回 true,否则返回 false

operator func !=
public operator func !=(d: Decimal): Bool

功能:不等比较运算,不等运算符重载,判断入参 Decimal 对象与当前对象是否不相等,返回比较结果值。

参数:

  • d:Decimal 待比较对象

返回值:返回不等比较运算结果。当前对象不等于入参时,返回 true,否则返回 false

func compare
public func compare(d: Decimal): Ordering

功能:比较当前对象与入参 Decimal 对象,返回比较结果值。

参数:

  • d:Decimal 待比较对象

返回值:返回比较结果,当前对象小于入参时,返回 Ordering.LT,大于入参时,返回 Ordering.GT,否则返回 Ordering.EQ

func hashCode
public func hashCode(): Int64

功能:获取当前对象哈希值。

返回值:返回当前对象哈希值

func toString
public func toString(): String

功能:以不带指数形式打印输出 Decimal 对象,小于 0 时以 “-” 开头后跟十进制数字,大于等于 0 时,直接打印输出数字,不额外添加 “+”。

返回值:不带指数形式的 Decimal 字符串

func reScale
public func reScale(newScale: Int32, rm!: RoundingMode = HALF_EVEN): Decimal

功能:调整 Decimal 对象标度值,允许指定舍入规则,返回标度调整后新的 Decimal 对象。

参数:

  • newScale:新的标度值

  • rm:舍入规则

返回值:新的标度值的 Decimal 对象

func removeTrailingZeros
public func removeTrailingZeros(): Decimal

功能:对当前 Decimal 对象移除尾部零,不改变对象数值。

返回值:新的无尾部零的 Decimal 对象

func scaleUnit
public func scaleUnit(): Decimal

功能:对当前 Decimal 对象返回标度单位,即数值为 1 ,标度值与当前对象相等的 Decimal 对象。

返回值:标度单位 Decimal 对象

func isInteger
public func isInteger(): Bool

功能:判断当前 Decimal 对象是否为整数。

返回值:返回当前对象是否为整数判断结果。当前对象为整数时返回 true,否则返回 false

func pow
public func pow(n: Int64): Decimal

功能:乘方运算,获取当前对象为底数,入参 Int64 为指数的乘方运算结果。

注意:指数为负值且结果为无限小数场景时,默认采用 IEEE 754-2019 decimal128 对结果进行舍入。

参数:

  • n:乘方运算的指数值

返回值:生成一个新的 Decimal 对象,用于存储乘方运算结果值

异常:

  • OverflowException:当乘方运算结果标度值溢出时,抛出此异常
func pow
public func pow(n: Int64, ctx: DecimalContext): Decimal

功能:乘方运算,支持自定义运算上下文,获取当前对象为底数,入参 Int64 为指数的乘方运算结果,如果运算结果超过上下文指定精度,则根据指定的上下文对乘方结果进行舍入。

参数:

  • n:乘方运算的指数值

  • ctx:Decimal 上下文

返回值:生成一个新的 Decimal 对象,用于存储乘方运算结果值

异常:

  • OverflowException:当乘方运算结果标度值溢出时,抛出此异常
operator func **
public operator func **(n: Int64): Decimal

功能:乘方运算,乘方运算符重载,行为与 pow 函数相同,获取当前对象为底数,入参 Int64 为指数的乘方运算结果,其中指数为入参 Decimal 对象的整数部分。

注意:指数为负值且结果为无限小数场景时,默认采用 IEEE 754-2019 decimal128 对结果进行舍入。

参数:

  • n:乘方运算的指数值

返回值:生成一个新的 Decimal 对象,用于存储乘方运算结果值

异常:

  • OverflowException:当乘方运算结果标度值溢出时,抛出此异常
func shiftPoint
public func shiftPoint(n: Int32): Decimal

功能:移动当前 Decimal 对象小数点 abs(n) 位返回结果对象,当 n 为正数时,左移小数点,n 为负数时,右移小数点,n 为零时,返回当前对象。

参数:

  • n:指定小数点移动位数及方向

返回值:对当前对象小数点移动指定位数后生成新的 Decimal 对象

func round
public func round(ctx: DecimalContext): Decimal

功能:按照指定上下文(舍入精度、舍入规则)对当前 Decimal 对象进行舍入操作。

参数:

  • ctx:Decimal 上下文

返回值:舍入操作生成的新的 Decimal 对象

异常:

  • OverflowException:当舍入操作结果标度值溢出时,抛出此异常
func abs
public func abs(): Decimal

功能:获取当前 Decimal 对象的绝对值。

返回值:返回当前 Decimal 对象的绝对值

func sqrt
public func sqrt(ctx!: DecimalContext = defaultDecimalContext): Decimal

功能:开方运算,支持自定义运算上下文,获取当前对象开方结果,如果运算结果超过上下文指定精度,则根据指定的上下文对开方结果进行舍入。

入参:

  • ctx:Decimal 上下文

返回值:生成一个新的 Decimal 对象,用于存储开方运算结果值

异常:

  • IllegalArgumentException:当前 Decimal 对象为负数时,抛出此异常
func toInt8
public func toInt8(overflowHandling!: OverflowStrategy = throwing): Int8

功能:将当前 Decimal 对象转化为 Int8 类型,支持自定义溢出策略。

入参:

  • overflowHandling:转换溢出策略

返回值:转换后的 Int8

异常:

  • OverflowException:当不指定溢出策略或溢出策略为 throwing 转换溢出时,抛出此异常
func toInt16
public func toInt16(overflowHandling!: OverflowStrategy = throwing): Int16

功能:将当前 Decimal 对象转化为 Int16 类型,支持自定义溢出策略。

入参:

  • overflowHandling:转换溢出策略

返回值:转换后的 Int16

异常:

  • OverflowException:当不指定溢出策略或溢出策略为 throwing 转换溢出时,抛出此异常
func toInt32
public func toInt32(overflowHandling!: OverflowStrategy = throwing): Int32

功能:将当前 Decimal 对象转化为 Int32 类型,支持自定义溢出策略。

入参:

  • overflowHandling:转换溢出策略

返回值:转换后的 Int32

异常:

  • OverflowException:当不指定溢出策略或溢出策略为 throwing 转换溢出时,抛出此异常
func toInt64
public func toInt64(overflowHandling!: OverflowStrategy = throwing): Int64

功能:将当前 Decimal 对象转化为 Int64 类型,支持自定义溢出策略。

入参:

  • overflowHandling:转换溢出策略

返回值:转换后的 Int64

异常:

  • OverflowException:当不指定溢出策略或溢出策略为 throwing 转换溢出时,抛出此异常
func toIntNative
public func toIntNative(overflowHandling!: OverflowStrategy = throwing): IntNative

功能:将当前 Decimal 对象转化为 IntNative 类型,支持自定义溢出策略。

入参:

  • overflowHandling:转换溢出策略

返回值:转换后的 IntNative

异常:

  • OverflowException:当不指定溢出策略或溢出策略为 throwing 转换溢出时,抛出此异常
func toUInt8
public func toUInt8(overflowHandling!: OverflowStrategy = throwing): UInt8

功能:将当前 Decimal 对象转化为 UInt8 类型,支持自定义溢出策略。

入参:

  • overflowHandling:转换溢出策略

返回值:转换后的 UInt8

异常:

  • OverflowException:当不指定溢出策略或溢出策略为 throwing 转换溢出时,抛出此异常
func toUInt16
public func toUInt16(overflowHandling!: OverflowStrategy = throwing): UInt16

功能:将当前 Decimal 对象转化为 UInt16 类型,支持自定义溢出策略。

入参:

  • overflowHandling:转换溢出策略

返回值:转换后的 UInt16

异常:

  • OverflowException:当不指定溢出策略或溢出策略为 throwing 转换溢出时,抛出此异常
func toUInt32
public func toUInt32(overflowHandling!: OverflowStrategy = throwing): UInt32

功能:将当前 Decimal 对象转化为 UInt32 类型,支持自定义溢出策略。

入参:

  • overflowHandling:转换溢出策略

返回值:转换后的 UInt32

异常:

  • OverflowException:当不指定溢出策略或溢出策略为 throwing 转换溢出时,抛出此异常
func toUInt64
public func toUInt64(overflowHandling!: OverflowStrategy = throwing): UInt64

功能:将当前 Decimal 对象转化为 UInt64 类型,支持自定义溢出策略。

入参:

  • overflowHandling:转换溢出策略

返回值:转换后的 UInt64

异常:

  • OverflowException:当不指定溢出策略或溢出策略为 throwing 转换溢出时,抛出此异常
func toUIntNative
public func toUIntNative(overflowHandling!: OverflowStrategy = throwing): UIntNative

功能:将当前 Decimal 对象转化为 UIntNative 类型,支持自定义溢出策略。

入参:

  • overflowHandling:转换溢出策略

返回值:转换后的 UIntNative

异常:

  • OverflowException:当不指定溢出策略或溢出策略为 throwing 转换溢出时,抛出此异常
func toFloat16
public func toFloat16(): Float16

功能:将当前 Decimal 对象转化为 Float16 类型。

返回值:转换后的 Float16 值,溢出时,当前值为正数,返回 inf,当前值为负数,返回 -inf

func toFloat32
public func toFloat32(): Float32

功能:将当前 Decimal 对象转化为 Float32 类型。

返回值:转换后的 Float32 值,溢出时,当前值为正数,返回 inf,当前值为负数,返回 -inf

func toFloat64
public func toFloat64(): Float64

功能:将当前 Decimal 对象转化为 Float64 类型。

返回值:转换后的 Float64 值,溢出时,当前值为正数,返回 inf,当前值为负数,返回 -inf

func toBigInt
public func toBigInt(): BigInt

功能:将当前 Decimal 对象转化为 BigInt 类型。

返回值:转换后的 BigInt

func toEngString
public func toEngString(): String

功能:以工程计数法的形式打印输出 Decimal 对象,指数为 3 的倍数, 当值小于 0 时以 “-” 开头后跟十进制数字,大于等于 0 时,直接打印输出数字,不额外添加 “+”。指数小于 0 时同样遵循以上规则。

返回值:工程计数法形式的 Decimal 字符串

func toSciString
public func toSciString(): String

功能:以科学计数法的形式打印输出 Decimal 对象,当值小于 0 时以 “-” 开头后跟十进制数字,大于等于 0 时,直接打印输出数字,不额外添加 “+”。指数小于 0 时同样遵循以上规则。

返回值:科学计数法形式的 Decimal 字符串

示例

Decimal 基础运算操作

以下为通过不同构造函数初始化 Decimal 对象的,并进行基础数学运算示例:

代码如下:

from std import math.numeric.*

main() {
    let decimal1: Decimal = Decimal("12345.6789")
    let decimal2: Decimal = Decimal(BigInt("987654321"), 6)
    println("without ctx:")
    println("${decimal1} + ${decimal2} = ${decimal1 + decimal2}")
    println("${decimal1} - ${decimal2} = ${decimal1 - decimal2}")
    println("${decimal1} * ${decimal2} = ${decimal1 * decimal2}")
    println("${decimal1} / ${decimal2} = ${decimal1 / decimal2}")
    let (quo, rem) = decimal1.divAndRem(decimal2)
    println("${decimal1} / ${decimal2} = ${quo} .. ${rem}")
    println("with ctx(precision: 8, HALF_EVEN):")
    let baseOperCtx = DecimalContext(8, HALF_EVEN)
    println("${decimal1} + ${decimal2} = ${decimal1.add(decimal2, baseOperCtx)}")
    println("${decimal1} - ${decimal2} = ${decimal1.sub(decimal2, baseOperCtx)}")
    println("${decimal1} * ${decimal2} = ${decimal1.mul(decimal2, baseOperCtx)}")
    println("${decimal1} / ${decimal2} = ${decimal1.div(decimal2, baseOperCtx)}")
    let (quoWithCtx, remWithCtx) = decimal1.divAndRem(decimal2, baseOperCtx)
    println("${decimal1} / ${decimal2} = ${quoWithCtx} .. ${remWithCtx}")
    return 0 
}

运行结果如下:

without ctx:
12345.6789 + 987.654321 = 13333.333221
12345.6789 - 987.654321 = 11358.024579
12345.6789 * 987.654321 = 12193263.1112635269
12345.6789 / 987.654321 = 12.49999988609375000142382812498220
12345.6789 / 987.654321 = 12 .. 493.827048
with ctx(precision: 8, HALF_EVEN):
12345.6789 + 987.654321 = 13333.333
12345.6789 - 987.654321 = 11358.025
12345.6789 * 987.654321 = 12193263
12345.6789 / 987.654321 = 12.500000
12345.6789 / 987.654321 = 12 .. 493.827048

Decimal 基本属性操作

以下为初始化 Decimal 对象的,并查询对象的基本属性的示例:

代码如下:

from std import math.numeric.*

main() {
    let decimalProperties = Decimal("-123456.7890123456789")
    println("deciaml: ${decimalProperties}")
    println("decimal sign: ${decimalProperties.sign}")
    println("decimal scale: ${decimalProperties.scale}")
    println("decimal value: ${decimalProperties.value}")
    println("decimal precision: ${decimalProperties.precision}")
    return 0
}

运行结果如下:

deciaml: -123456.7890123456789
decimal sign: -1
decimal scale: 13
decimal value: -1234567890123456789
decimal precision: 19

Decimal 比较操作

以下为初始化多个 Decimal 对象,相互之间大小比较的示例:

代码如下:

from std import math.numeric.*

main() {
    let decimal1 = Decimal("12345.6789")
    let decimal2 = Decimal("987.654321")    
    println("${decimal1} > ${decimal2} = ${decimal1 > decimal2}")
    println("${decimal1} < ${decimal2} = ${decimal1 < decimal2}")
    println("${decimal1} == ${decimal2} = ${decimal1 == decimal2}")
    println("${decimal1} != ${decimal2} = ${decimal1 != decimal2}")
    println("${decimal1} <= ${decimal2} = ${decimal1 <= decimal2}")
    println("${decimal1} >= ${decimal2} = ${decimal1 >= decimal2}")
    println("${decimal1}.compare(${decimal2}) = ${decimal1.compare(decimal2)}")
    return 0 
}

运行结果如下:

12345.6789 > 987.654321 = true
12345.6789 < 987.654321 = false
12345.6789 == 987.654321 = false
12345.6789 != 987.654321 = true
12345.6789 <= 987.654321 = false
12345.6789 >= 987.654321 = true
12345.6789.compare(987.654321) = Ordering.GT

BigInt 基础运算操作

以下为通过不同构造函数初始化 BigInt 对象的,并进行基础数学运算示例:

代码如下:

from std import math.numeric.*

main() {
    let int1: BigInt = BigInt("123456789")
    let int2: BigInt = BigInt("987654321")

    println("${int1} + ${int2} = ${int1 + int2}")
    println("${int1} - ${int2} = ${int1 - int2}")
    println("${int1} * ${int2} = ${int1 * int2}")
    println("${int1} / ${int2} = ${int1 / int2}")
    let (quo, mod) = int1.divAndMod(int2)
    println("${int1} / ${int2} = ${quo} .. ${mod}")

    return 0 
}

运行结果如下:

123456789 + 987654321 = 1111111110
123456789 - 987654321 = -864197532
123456789 * 987654321 = 121932631112635269
123456789 / 987654321 = 0
123456789 / 987654321 = 0 .. 123456789

BigInt 基本属性操作

以下为初始化 BigInt 对象的,并查询对象的基本属性的示例:

代码如下:

from std import math.numeric.*

main() {
    let int = BigInt("-123456")
    println("BigInt: ${int}")
    println("BigInt sign: ${int.sign}")
    println("BigInt bitLen: ${int.bitLen}")
    return 0
}

运行结果如下:

BigInt: -123456
BigInt sign: -1
BigInt bitLen: 18

BigInt 比较操作

以下为初始化多个 BigInt 对象,相互之间大小比较的示例:

代码如下:

from std import math.numeric.*

main() {
    let int1 = BigInt("123456789")
    let int2 = BigInt("987654321")    
    println("${int1} > ${int2} = ${int1 > int2}")
    println("${int1} < ${int2} = ${int1 < int2}")
    println("${int1} == ${int2} = ${int1 == int2}")
    println("${int1} != ${int2} = ${int1 != int2}")
    println("${int1} <= ${int2} = ${int1 <= int2}")
    println("${int1} >= ${int2} = ${int1 >= int2}")
    println("${int1}.compare(${int2}) = ${int1.compare(int2)}")
    return 0 
}

运行结果如下:

123456789 > 987654321 = false
123456789 < 987654321 = true
123456789 == 987654321 = false
123456789 != 987654321 = true
123456789 <= 987654321 = true
123456789 >= 987654321 = false
123456789.compare(987654321) = Ordering.LT