程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 取模與取余,取模取余

取模與取余,取模取余

編輯:關於C語言

取模與取余,取模取余


對於整型數a,b來說,取模運算或者求余運算的方法都是: 1.求整數商: c = a/b; 2.計算模或者余數: r = a - c*b. 求模運算和求余運算在第一步不同: 取余運算在取c的值時,向0 方向捨入(fix()函數);而取模運算在計算c的值時,向負無窮方向捨入(floor()函數)。   例如:計算-8 % 3 那麼:a = -8;b = 3; 第一步:求整數商c,(float)c = a/b = -2.67 ,如進行求模運算c = -3(向負無窮方向捨入),求余c = -2(向0方向捨入); 第二步:計算模和余數的公式相同,但因c的值不同,求模時r = 1,求余時r = -2。   歸納:當a和b符號一致時,求模運算和求余運算所得的c的值一致,因此結果一致。 當符號不一致時,結果不一樣。求模運算結果的符號和b一致,求余運算結果的符號和a一致。   各個環境下%運算符的含義不同,比如c/c++,java 為取余,而python則為取模,就數學上而言,兩種都是正確的。   很多語言干脆提出兩個函數,取余rem和取模mod。 事實上,a mod b = floor((float)c) = floor(a/b) = floor(-2.67) = -3 ; a rem b = a mod b + 1;floor表示向下取整,對應的,rem也可用fix實現。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved