繁体   English   中英

C++ 中的除法运算符 ( / ) 是否在 num 具有相同符号和 ceil 值的情况下返回 floor 值,当两个数字具有相反的符号时?

[英]Does division operator ( / ) in C++ return the floor value in case of num with same sign and ceil value when both the numbers are of opposite sign?

在C++中,当分子和分母均为整数且符号相同时,除法运算给出商的底值。 但是当它们的符号相反时,它就会给出 ceil 值。 我的理解是正确的还是还有更多?

你说得对。 一些 20 世纪的硬件工程师决定这样做,据我所知,现在所有的微处理器都是这样做的。 从数学上讲,这通常有点不方便,这就是为什么 Python(例如)在软件中更正总是朝着地板方向舍入。

要获得更多见解,除了 integer 商的p/q之外,请尝试p%q相应的余数。

你的问题被标记为C++但这实际上是一个计算机硬件问题,因此,查阅 C17 标准可能更有帮助,其 sect. 6.5.5(6) 内容如下:

当整数相除时, /运算符的结果是舍去任何小数部分的代数商。 如果商a/b是可表示的,则表达式(a/b)*b + a%b应等于a ....

(我有一个 memory 的碎片,来自 25 或 30 年前,读到一个 CPU 向地板四舍五入。如果我的 memory 不是完全虚构的,那么那个 CPU 显然没有在市场上取得成功,不是吗?)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM