# div
带有舍入选项的整除
# 语法
C = div(A,B)
C = div(A,B,r::RoundingMode=RoundToZero)
# 说明
C = div(A,B) 将 A 的每个元素除以 B 的对应元素,朝零方向舍入到最接近的整数。A 和 B 必须包含实数,并且其中有至少一个必须属于整数类。
- 如果 A 和 B 是数组,则它们必须属于同一整数类,并且大小兼容;
- 如果 A 或 B 是双精度标量,则另一个输入必须为整数类,但不能是 int64 或 uint64。然后,div 函数以相同的整数类形式返回 C。示例
C = div(A,B,r::RoundingMode) 可以指定替代选项:
| RoundingMode 选项 | 对应函数 |
|---|---|
| RoundToZero | 默认 |
| RoundDown | fld |
| RoundUp | cld |
| RoundNearest | 最近整数舍入 |
| RoundNearestTiesAway | —— |
| RoundNearestTiesUp | —— |
# 示例
整数除法
创建整数数组 A 和整数标量 B。将 A 的每个元素除以 B,朝零方向舍入到最接近的整数。
A = Int16.([-7 -4 7 11])
B = Int16(10)
C = div.(A,B)
C = 1×4 Matrix{Int16}:
0 0 0 1
两个整数数组相除
创建两个整数数组 A 和 B。将 A 的每个元素除以 B 的对应元素,朝零方向舍入到最接近的整数。
A = Int64.([-2 3])
B = Int64.([3 5])
C = div.(A,B)
C = 1×2 Matrix{Int64}:
0 0
整数除法的舍入选项
创建双精度标量 A 和整数数组 B。用默认舍入选项 RoundToZero 将 A 除以 B 的每个元素。
A = 2.0
B = Int32.([-3 3 4])
C = div.(A,B)
C = 1×3 Matrix{Float64}:
-0.0 0.0 0.0
将结果与使用其他舍入选项时的结果进行比较。
C = div.(A,B,RoundDown)
C = 1×3 Matrix{Float64}:
-1.0 0.0 0.0
C = div.(A,B,RoundUp)
C = 1×3 Matrix{Float64}:
-0.0 1.0 1.0
C = div.(A,B,RoundNearest)
1×3 Matrix{Float64}:
-1.0 1.0 0.0
浮点值被除后的余数
计算多个角除以除数 2*pi 后的余数。div 将尝试补偿浮点四舍五入取整的影响,以尽可能生成精确的整数结果。
theta = [0.0, 3.5, 5.9, 6.2, 9.0, 4*pi]
m = 2*pi
b = div.(theta,m)
b = 6-element Vector{Float64}:
0.0
0.0
0.0
0.0
1.0
2.0
# 输入参数
A - 分子标量 | 向量 | 矩阵 | 多维数组
分子,指定为标量、向量、矩阵或多维数组。整数输入 A 和 B 必须大小相同或大小兼容。例如,A 是 M×N 矩阵,B 是标量或 1×N 行向量。
数据类型: Int64 | Int32 | Int16 | Int128 | Float64 | Float32 | Float16 | UInt8 | UInt16 | UInt32 | UInt64 | UInt64 | Bool
B - 分母标量 | 向量 | 矩阵 | 多维数组
分母,指定为标量、向量、矩阵或多维数组。整数输入 A 和 B 必须大小相同或大小兼容。例如,A 是 M×N 矩阵,B 是标量或 1×N 行向量。
数据类型: Int64 | Int32 | Int16 | Int128 | Float64 | Float32 | Float16 | UInt8 | UInt16 | UInt32 | UInt64 | UInt64 | Bool
# 输出参数
C - 整数解标量 | 向量 | 矩阵 | 多维数组
整数解,以标量、向量、矩阵或多维数组形式返回。如果 A 或 B 为整数数据类型,则 C 是相同的整数数据类型。
mod 和 div 的区别
除后所得余数的概念的定义不是唯一的,两个函数 mod 和 div 各计算不同的结果。mod 函数生成一个为零或与除数具有相同符号的结果。div 函数生成一个为零或与被除数具有相同符号的结果。
另一个差别是当除数为零时的约定。mod 函数遵从 mod(a,0)报错约定,而 div 函数遵从 div(a,0)报错的约定。
两个结果都有其各自的用途。例如,在进行信号处理时,mod 函数可在周期信号上下文中使用,因为其输出是周期性的(周期等于除数)。