使用 Google 我可以找到很多关于整数除法在 Rust 中应该如何工作的旧论点,但我在参考、整数类型的 API 文档或Div
trait 的 API 文档中找不到任何内容实际决定了什么。 (并且文档似乎暗示/
、 checked_div
和wrapping_div
可能不会都做同样的事情。)这进一步被整数类型文档混淆,显然有时使用/
指的是整数除法,有时也指数学除法。 (我无法在wrapping_div
文档中对floor(self / other)
提出任何其他合理的解释。)如果在某处清楚地记录了这一点,那就太好了,因为这因语言而异,并且是一种与整数算术的主要混淆。
http://doc.rust-lang.org/reference.html#behavior -not-thinked-unsafe 谈论“溢出”并提到包装,但您是对的,我们可以更好地展示这一点。
@steveklabnik
这是关于四舍五入,而不是环绕。 我们使用 LLVM 的sdiv
,它向零舍入(并且srem
与股息具有相同的符号)。 我们应该记录这一点( wrapping_div
的文档目前_lies_,声称它向负无穷大舍入)。
这也应该留下一个警告,因为整数/整数并不总是需要的,并且是偶然发生的。 只是一个想法,如果有人正在阅读这个。