深度理解取余/取模运算
生活随笔
收集整理的這篇文章主要介紹了
深度理解取余/取模运算
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
日常編程經常會接觸到取余/取模運算,那么計算機中取余/取模運算究竟是怎么定義的?
P1:四種"取整"方式
數學取整
1.1 向0取整
parseInt() 注意接受參數是string;所以調用該方法時存在類型轉換parseInt(3.141592654) // 31.2?向下取整
Math.floor() 不四舍五入Math.floor(1.5555) // 11.3 向上取整
Math.ceil() 向上取整Math.ceil(1.5555) // 2 Math.ceil(1.1555) // 21.4?四舍五入取整
Math.round() 四舍五入取整Math.round(1.5555) //2 Math.round(1.4999) //1P2:用公式理解"取模"
取模概念
如果a和d是兩個自然數,d非零,可以證明存在兩個唯一的整數 q 和 r,滿足?a = q*d + r 且 0 ≤ r < d。其中,q 被稱為商,r 被稱為余數。
?運算符之 --- 取余運算 %
?
P3:“取余”和“取?!币粯訂?#xff1f;
取整
取余:盡可能讓商,進行向0取整。
取模:盡可能讓商,向-∞方向取整。
C中 % ,本質其實是取余。
Python中 % ,本質其實是取模。
理解鏈:
對任何一個大于0的數,對其進行0向取整和-∞取整,取整方向是一致的。故取模等價于取余
對任何一個小于0的數,對其進行0向取整和-∞取整,取整方向是相反的。故取模不等價于取余
同符號數據相除,得到的商,一定是正數(正數vs正整數),即大于0!故,在對其商進行取整的時候,取模等價于取余。
P4:總結
- 浮點數(或者整數相除),是有很多的取整方式的,0向取整、(正、負)無窮向取整、四舍五入取整…
- 如果 a 和 d 是兩個自然數,d非零,可以證明存在兩個唯一的整數 q 和 r,滿足 a = q*d + r , q 為整數,且0 ≤ |r|< |d|。其中,q 被稱為商,r 被稱為余數
- 在不同語言,同一個計算表達式,“取模”結果是不同的。我們可以稱之為分別叫做正余數 和 負余數
- 具體余數 r 的大小,本質是取決于商 q 的。而商,又取決于除法計算的時候,取整規則。
- 取余 vs 取模:取余是盡可能讓商,進行向 0 取整。取模是盡可能讓商,向 -∞ 方向取整。
- 參與取余的兩個數據,如果同符號,取模等價于取余
- 如果參與取余的兩個數據符號不同,在C語言中(或者其他采用向0取整的語言如:C++,Java),余數符號,與被除數相同。(因為采用的向0取整)
總結
以上是生活随笔為你收集整理的深度理解取余/取模运算的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: op的形态和自激
- 下一篇: Mathtype 自动转 latex b