# 数值类型


# 标准数值类型

下面展示了 BaseNumber 的所有子类型的类型树。 抽象类型已经标出,其余的是具体类型。

Number  (Abstract Type)
├─ Complex
└─ Real  (Abstract Type)
   ├─ AbstractFloat  (Abstract Type)
   │  ├─ Float16
   │  ├─ Float32
   │  ├─ Float64
   │  └─ BigFloat
   ├─ Integer  (Abstract Type)
   │  ├─ Bool
   │  ├─ Signed  (Abstract Type)
   │  │  ├─ Int8
   │  │  ├─ Int16
   │  │  ├─ Int32
   │  │  ├─ Int64
   │  │  ├─ Int128
   │  │  └─ BigInt
   │  └─ Unsigned  (Abstract Type)
   │     ├─ UInt8
   │     ├─ UInt16
   │     ├─ UInt32
   │     ├─ UInt64
   │     └─ UInt128
   ├─ Rational
   └─ AbstractIrrational  (Abstract Type)
      └─ Irrational

# 抽象数值类型

函数名 简介
Number 所有数字类型的抽象超类型
Real 所有实数类型的抽象超类型
AbstractFloat 所有浮点数类型的抽象超类型
Integer 所有整数类型的抽象超类型
Signed 所有有符号整数类型的抽象超类型
Unsigned 所有无符号整数类型的抽象超类型
AbstractIrrational 表示精确无理数值的数值类型

# 具体数值类型

函数名 简介
Float16 16 位浮点数类型
Float32 32 位浮点数类型
Float64 64 位浮点数类型
BigFloat 任意精度浮点数类型
Bool 布尔类型
Int8 8 位有符号整数类型
UInt8 8 位无符号整数类型
Int16 16 位有符号整数类型
UInt16 16 位无符号整数类型
Int32 32 位有符号整数类型
UInt32 32 位无符号整数类型
Int64 64 位有符号整数类型
UInt64 64 位无符号整数类型
Int128 128 位有符号整数类型
UInt128 128 位无符号整数类型
BigInt 任意精度整数类型
Complex 复数类型
Rational 有理数类型
Irrational 精确无理数的数值类型

# 数据格式

函数名 简介
digits 返回一个数组,元素类型为指定类型(默认是 Int),表示整数 n 在指定进制下的各个位数
digits! 将整数 n 在指定进制下的各个位数填充到给定数组中
bitstring 返回一个字符串,表示某个原始类型的二进制位的字面表示
parse 将表示平台的字符串三元组解析回对应的 Platform 对象
tryparse 类似于 parse,但如果字符串不包含有效数字,则返回 nothing
big 将数字转换为最大精度表示,通常是 BigInt 或 BigFloat
signed 将整数类型 T 转换为同尺寸的有符号类型
unsigned 将整数类型转换为同尺寸的无符号类型
float 将数字或数组转换为浮点数数据类型
Base.Math.significand 提取浮点数的有效数字部分
Base.Math.exponent 返回满足 2^y ≤ abs(x) 的最大整数 y
complex 将实数或实数数组转换为复数或复数数组
bswap 将整数 n 的字节顺序进行反转
hex2bytes 将一个可迭代对象转换为对应的字节向量,其中每两个连续的十六进制数字组成一个字节
hex2bytes! 将表示十六进制字符串的字节序列就地转换为二进制表示,结果写入指定的目标数组中
bytes2hex 将字节迭代器转换为对应的小写十六进制字符串

# 常用数值函数和常量

函数名 简介
one 返回乘法单位元,即满足 one(x) * x == x * one(x) == x 的值
oneunit 返回将乘法单位元 one(x) 转换为指定类型 T 后的值
zero 获取与参数 x 类型对应的加法单位元
im 表示虚部单位
Base.MathConstants.pi 常数π
Base.MathConstants.ℯ 常数ℯ
Base.MathConstants.catalan 卡特兰常数
Base.MathConstants.eulergamma 欧拉常数
Base.MathConstants.golden 黄金比例
Inf 表示 Float64 类型的正无穷大
Inf64 表示 Float64 类型的正无穷大
Inf32 表示 Float32 类型的正无穷大
Inf16 表示 Float16 类型的正无穷大
NaN 表示 Float64 类型的非数字值
NaN64 表示 Float64 类型的非数字值
NaN32 表示 Float32 类型的非数字值
NaN16 表示 Float16 类型的非数字值
issubnormal 判断一个浮点数是否为次正规数(即非常小但非零的浮点数)
isfinite 判断一个数值是否为有限数
isinf 判断数值是否为无穷大
isnan 判断数值是否为非数字
iszero 如果 x 等于零,返回 true;如果 x 是数组,则检查数组中所有元素是否都为零
isone 如果 x 等于加法单位元 one(x),则返回 true;如果 x 是数组,则检查是否为单位矩阵
nextfloat 返回与 x 类型相同且严格大于 x 的最小浮点数
prevfloat 返回与 x 类型相同且严格小于 x 的最大浮点数
isinteger 判断 x 是否在数值上等于某个整数
isreal 判断 x 或其所有元素是否在数值上等于某个实数,包括无穷大和 NaN
Float32 将 x 转换为 Float32 类型
Float64 将 x 转换为 Float64 类型
Base.Rounding.rounding 获取类型 T 当前的浮点舍入模式,控制基本算术函数(加、减、乘、除、开方)和类型转换的舍入行为
Base.Rounding.setrounding 设置类型 T 的浮点舍入模式
Base.Rounding.get_zero_subnormals 判断次正规浮点数的运算是否严格遵守 IEEE 规则,若遵守则返回 false
Base.Rounding.set_zero_subnormals 用于设置浮点运算中是否允许将次正规数转换为零

# 整型

函数名 简介
count_ones 计算整数 x 的二进制表示中 1 的个数
count_zeros 计算整数 x 的二进制表示中 0 的个数
leading_zeros 计算整数 x 的二进制表示中前导的 0 的个数
leading_ones 计算整数 x 的二进制表示中前导的 1 的个数
trailing_zeros 计算整数 x 的二进制表示中尾部的零的数量
trailing_ones 计算整数 x 的二进制表示中尾部的 1 的数量
isodd 判断 x 是否为奇数
iseven 判断 x 是否为偶数
@int128_str 将字符串 str 解析为 Int128 类型的整数
@uint128_str 将字符串 str 解析为 UInt128 类型的整数

# BigFloats 和 BigInts

BigFloatBigInt 类型分别实现了任意精度的浮点数和整数运算。其中,BigFloat 使用的是 GNU MPFR 库,而 BigInt 使用的是 GNU 多精度运算库(GMP)。

函数名 简介
Base.MPFR.BigFloat 根据指定精度 precision,将 x 转换为任意精度的浮点数
precision 获取浮点数的有效精度,或浮点类型的精度
Base.MPFR.setprecision 设置浮点类型的运算精度
Base.GMP.BigInt 创建一个任意精度整数
@big_str 将字符串解析为 BigInt 或 BigFloat 类型