簡體   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