Truncated division And Euclidean division
Mar 29, 2023•2 min read
之前一直不太理解 rust 语言中原始类型中的数值类型取模运算(mod)和除运算(division)单独提供 rem_euclid
和 div_euclid
的原因。
数学定义:
在编程语言中,实现除运算根据运算取整的时候采用何种策略来区分有五种实现。
-
Truncated division
- [] 表示 rounding toward zero,向零取整。

-
Floored division
- ⌊⌋ 表示 rounding down,向负无穷取整。

-
-
sgn 表示符号函数。
-
⌊⌋ 表示 rounding down,向负无穷方向取整。
-
⌈⌉ 表示 rounding up,向正无穷方向取整。
-
-
Rounded division
- round 表示 rounding half to even,四舍五入取整。
-
Ceiled division
-
⌈⌉ 表示 rounding up,向正无穷方向取整。
-
我常用的语言中:
- rust 的
rem
和div
采用的 Truncated division 实现方案。 - rust 的
rem_euclid
和div_euclid
采用的 Euclidean division 实现方案。 - javascript 的
rem( % )
和div ( / )
采用的 Truncated division 实现方案。