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 实现方案。