摘要:區(qū)分取余與取模取余與與取模的本質區(qū)別取余盡可能讓商,進行向取整。理解鏈對任何一個大于的數,對其進行向取整和負無窮取整,取整方向是一致的。故取模等價于取余。
目錄
#include
#include int main(){ //本質是向0取整 //trunc()函數也有這種作用,不過返回值是浮點數,而且必須引用math.h頭文件 int i = -2.9; int j = 2.9; printf("%d/n", i); //結果是:-2 printf("%d/n", j); //結果是:2 system("pause"); return 0;}
#include
#include //因為使用了floor函數,需要添加該頭文件#include int main(){ //本質是向-∞取整,注意輸出格式要不然看不到結果 printf("%.1f/n", floor(-2.9)); //-3 printf("%.1f/n", floor(-2.1)); //-3 printf("%.1f/n", floor(2.9)); //2 printf("%.1f/n", floor(2.1)); //2 system("pause"); return 0;}
?注意:使用floor()函數需要引頭文件,參數為double 類型。返回值也同樣為double類型。同時不要忘了引math.h頭文件。
?
?注意:python默認的取整方案就是地板取整,后面也正是因為這個原因,才出現了取模的不同!
#include
#include #include int main(){ //本質是向+∞取整,注意輸出格式要不然看不到結果 printf("%.1f/n", ceil(-2.9)); //-2 printf("%.1f/n", ceil(-2.1)); //-2 printf("%.1f/n", ceil(2.9)); //3 printf("%.1f/n", ceil(2.1)); //3 system("pause"); return 0;}
注意:使用ceil()函數需要引頭文件,參數為double 類型。返回值也同樣為double類型。同時不要忘了引math.h頭文件。
?
#include
#include #include int main(){//本質是四舍五入printf("%.1f/n", round(2.1));printf("%.1f/n", round(2.9));printf("%.1f/n", round(-2.1));printf("%.1f/n", round(-2.9));system("pause");return 0;}
注意:使用round()函數需要引頭文件,參數為double 類型。返回值也同樣為double類型。同時不要忘了引math.h頭文件。
#include
#include #include int main(){ const char* format = "%.1f /t%.1f /t%.1f /t%.1f /t%.1f/n"; printf("value/tround/tfloor/tceil/ttrunc/n"); printf("-----/t-----/t-----/t----/t-----/n"); printf(format, 2.3, round(2.3), floor(2.3), ceil(2.3), trunc(2.3)); printf(format, 3.8, round(3.8), floor(3.8), ceil(3.8), trunc(3.8)); printf(format, 5.5, round(5.5), floor(5.5), ceil(5.5), trunc(5.5)); printf(format, -2.3, round(-2.3), floor(-2.3), ceil(-2.3), trunc(-2.3)); printf(format, -3.8, round(-3.8), floor(-3.8), ceil(-3.8), trunc(-3.8)); printf(format, -5.5, round(-5.5), floor(-5.5), ceil(-5.5), trunc(-5.5)); system("pause"); return 0;}
余數的定義:如果a和d是兩個自然數,d非零,可以證明存在兩個唯一的整數 q 和 r,滿足 a = q*d + r , q 為整數,且0 ≤ |r|< |d|。其中,q 被稱為商,r 被稱為余數。
注意:余數并不一定都是正數,大家一定要牢記這個概念!
由定義可知:
? ? ? ? ? ? ? ? ? ? ?-10%3=-1------>-10/3=-3------->3*(-3)+(-1)=(-10)(C語言中是這樣的)
? ? ? ? ? ? ? ? ? ? ? -10%3=2------->-10/3=-4------->4*(-3)+ 2=(-10)(python環(huán)境中是這樣的)
解釋C: -10 = (-3) * 3 + (-1)(負余數)
解釋Python:-10 = (?)* 3 + 2,其中,可以推到出來,"?"必須是-4,即-10 = (-4)* 3 + 2,才能滿足定義。(正余數)
所以,在不同語言,同一個計算表達式,負數“取模”結果是不同的。我們可以稱之為分別叫做正余數和負余數。
由上面的例子可以看出,具體余數r的大小,本質是取決于商q的。
而商,又取決誰呢?取決于除法計算的時候,取整規(guī)則。
C語言中默認是0向取整,python中默認是-無窮的方向取整。
取余:盡可能讓商,進行向0取整。
取模:盡可能讓商,向負無窮方向取整。
所以:
C中%,本質其實是取余。
Python中%,本質其實是取模。
對任何一個大于0的數,對其進行0向取整和負無窮取整,取整方向是一致的。故取模等價于取余。其實這也是為什么我們常常會認為取模以取余是一碼事的原因所在。
對任何一個小于0的數,對其進行0向取整和負無窮取整,取整方向是相反的。故取模不等價于取余。
同符號數據相除,得到的商,一定是正數,即大于0! 故,在對其商進行取整的時候,取模等價于取余。(倘若從數學上理解,就是簡單的在負數的前面加一個絕對值即可)
#include
#include int main(){ printf("%d/n", -10 / 3); //結果:-3 printf("%d/n/n", -10 % 3); //結果:-1 為什么? -10=(-3)*3+(-1) printf("%d/n", 10 / -3); //結果:-3 printf("%d/n/n", 10 % -3); //結果:1 為什么?10=(-3)*(-3)+1 system("pause"); return 0;}
從上面可以看出:
被除數為負數時,取余后為負號。
除數為負數時,取余后為正數。
不同符號在C語言中雖然也有一定的規(guī)律,但我并不希望大家利用這個規(guī)律,而是利用定義老老實實的計算,畢竟這這是針對C語言的結論,在python中就不適用了,因為二者的取整方式是不同的。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/123618.html
摘要:通過虛擬節(jié)點優(yōu)化一致性算法為了提高一致性算法的平衡性,我們首先能夠想到的是,增加節(jié)點數,但是機器畢竟是需要經費啊,不是說增就能隨意增,那就增加虛擬節(jié)點,這樣就沒毛病了。 一、案例分析(1)問題概述 假設我們的圖片數據均勻的分配在三臺服務(分別標注為服務器A,服務器B、服務器C)上面,現在我們要從里面取圖片,服務端在拿到這個請求后,怎么會指定,這張圖片是存在服務器A、服務器B,還是服務器...
摘要:前言本次分析基于解釋器,版本在時代,整型有類型和長整型,長整型不存在溢出問題,即可以存放任意大小的整數。在后,統(tǒng)一使用了長整型。 前言 本次分析基于 CPython 解釋器,python3.x版本 在python2時代,整型有 int 類型和 long 長整型,長整型不存在溢出問題,即可以存放任意大小的整數。在python3后,統(tǒng)一使用了長整型。這也是吸引科研人員的一部分了,適合大數據...
摘要:多位數加多位數,反轉鏈表轉化整數,如果整數相加,可能會溢出,此方法行不通。直接進行位數運算,兩鏈表每取出一個就做運算,將結果放入到新鏈表中。求和運算會出現額外的進位一般進位與最高位進位兩種情況。兩位數取模運算。 Time:2019/4/2Title: ADD Two NumbersDifficulty: mediumAuthor:小鹿公眾號:一個不甘平凡的碼農。 題目二:ADD Two...
摘要:魔法方法基礎如果你想所以你寫調用初始化一個實例作為一個字符串的官方表示作為一個字符串作為字節(jié)數組作為格式化字符串方法在創(chuàng)建實例后調用如果你想控制創(chuàng)建過程請使用方法按照慣例應該返回一個有效的表達式的字符串方法也被稱為你的迭代相關如果你想所以你 Python 魔法方法 基礎: 如果你想... 所以,你寫... Python調用... 初始化一個實例 x = MyClass() x...
摘要:又用到了取余公式,推導出。用循環(huán)對數組各位進行轉換和相乘和累加。因為第二個取余公式證明乘積取余與乘數相加后再取余等價于乘積取余,所以在每個循環(huán)內都進行一次取余,以免乘積太大溢出。 Problem In data structure Hash, hash function is used to convert a string(or any other type) into an int...
閱讀 3921·2021-11-17 09:33
閱讀 3283·2021-10-08 10:05
閱讀 3111·2021-09-22 15:36
閱讀 1140·2021-09-06 15:02
閱讀 2772·2019-08-29 12:45
閱讀 1590·2019-08-26 13:40
閱讀 3399·2019-08-26 13:37
閱讀 420·2019-08-26 13:37