成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

深入理解取整、取余與取模問題

tracymac7 / 3961人閱讀

摘要:區(qū)分取余與取模取余與與取模的本質(zhì)區(qū)別取余盡可能讓商,進(jìn)行向取整。理解鏈對(duì)任何一個(gè)大于的數(shù),對(duì)其進(jìn)行向取整和負(fù)無窮取整,取整方向是一致的。故取模等價(jià)于取余。

目錄

1. 取整問題

1.0向取整(C語(yǔ)言默認(rèn)的取整方案)

2.地板取整(向負(fù)無窮的方向取整)

3.天花板取整(向+無窮的方向取整)

4.四舍五入取整

匯總例子

2.取模問題?

1.余數(shù)的定義

2.兩種余數(shù)

3.為什么會(huì)有這種現(xiàn)象?

3.區(qū)分取余與取模

1.取余與與取模的本質(zhì)區(qū)別

2.理解鏈

3.同符號(hào)與不同符號(hào)

1.同符號(hào):

2.不同符號(hào)


1. 取整問題

1.0向取整(C語(yǔ)言默認(rèn)的取整方案)

#include#includeint main(){	//本質(zhì)是向0取整   //trunc()函數(shù)也有這種作用,不過返回值是浮點(diǎn)數(shù),而且必須引用math.h頭文件	int i = -2.9;	int j = 2.9;	printf("%d/n", i); //結(jié)果是:-2	printf("%d/n", j); //結(jié)果是:2	system("pause");	return 0;}

2.地板取整(向負(fù)無窮的方向取整)

#include #include  //因?yàn)槭褂昧薴loor函數(shù),需要添加該頭文件#include int main(){	//本質(zhì)是向-∞取整,注意輸出格式要不然看不到結(jié)果	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()函數(shù)需要引頭文件,參數(shù)為double 類型。返回值也同樣為double類型。同時(shí)不要忘了引math.h頭文件。

?

?注意:python默認(rèn)的取整方案就是地板取整,后面也正是因?yàn)檫@個(gè)原因,才出現(xiàn)了取模的不同!

3.天花板取整(向+無窮的方向取整)

#include #include #include int main(){	//本質(zhì)是向+∞取整,注意輸出格式要不然看不到結(jié)果	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()函數(shù)需要引頭文件,參數(shù)為double 類型。返回值也同樣為double類型。同時(shí)不要忘了引math.h頭文件。

?

4.四舍五入取整

#include #include #include int main(){//本質(zhì)是四舍五入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()函數(shù)需要引頭文件,參數(shù)為double 類型。返回值也同樣為double類型。同時(shí)不要忘了引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;}

2.取模問題?

1.余數(shù)的定義

余數(shù)的定義:如果a和d是兩個(gè)自然數(shù),d非零,可以證明存在兩個(gè)唯一的整數(shù) q 和 r,滿足 a = q*d + r , q 為整數(shù),且0 ≤ |r|< |d|。其中,q 被稱為商,r 被稱為余數(shù)。

注意:余數(shù)并不一定都是正數(shù),大家一定要牢記這個(gè)概念!

2.兩種余數(shù)

由定義可知:

? ? ? ? ? ? ? ? ? ? ?-10%3=-1------>-10/3=-3------->3*(-3)+(-1)=(-10)(C語(yǔ)言中是這樣的)

? ? ? ? ? ? ? ? ? ? ? -10%3=2------->-10/3=-4------->4*(-3)+ 2=(-10)(python環(huán)境中是這樣的)

解釋C: -10 = (-3) * 3 + (-1)(負(fù)余數(shù))

解釋Python:-10 = (?)* 3 + 2,其中,可以推到出來,"?"必須是-4,即-10 = (-4)* 3 + 2,才能滿足定義。(正余數(shù))

所以,在不同語(yǔ)言,同一個(gè)計(jì)算表達(dá)式,負(fù)數(shù)“取?!苯Y(jié)果是不同的。我們可以稱之為分別叫做正余數(shù)和負(fù)余數(shù)。


3.為什么會(huì)有這種現(xiàn)象?

由上面的例子可以看出,具體余數(shù)r的大小,本質(zhì)是取決于商q的。

而商,又取決誰呢?取決于除法計(jì)算的時(shí)候,取整規(guī)則。

C語(yǔ)言中默認(rèn)是0向取整,python中默認(rèn)是-無窮的方向取整。

3.區(qū)分取余與取模

1.取余與與取模的本質(zhì)區(qū)別

取余:盡可能讓商,進(jìn)行向0取整。

取模:盡可能讓商,向負(fù)無窮方向取整。

所以:

C中%,本質(zhì)其實(shí)是取余。

Python中%,本質(zhì)其實(shí)是取模。

2.理解鏈

對(duì)任何一個(gè)大于0的數(shù),對(duì)其進(jìn)行0向取整和負(fù)無窮取整,取整方向是一致的。故取模等價(jià)于取余。其實(shí)這也是為什么我們常常會(huì)認(rèn)為取模以取余是一碼事的原因所在。

對(duì)任何一個(gè)小于0的數(shù),對(duì)其進(jìn)行0向取整和負(fù)無窮取整,取整方向是相反的。故取模不等價(jià)于取余。

3.同符號(hào)與不同符號(hào)

1.同符號(hào):

同符號(hào)數(shù)據(jù)相除,得到的商,一定是正數(shù),即大于0! 故,在對(duì)其商進(jìn)行取整的時(shí)候,取模等價(jià)于取余。(倘若從數(shù)學(xué)上理解,就是簡(jiǎn)單的在負(fù)數(shù)的前面加一個(gè)絕對(duì)值即可)

2.不同符號(hào)

#include#include int main(){	printf("%d/n", -10 / 3); //結(jié)果:-3	printf("%d/n/n", -10 % 3); //結(jié)果:-1 為什么? -10=(-3)*3+(-1)	printf("%d/n", 10 / -3); //結(jié)果:-3	printf("%d/n/n", 10 % -3); //結(jié)果:1 為什么?10=(-3)*(-3)+1	system("pause");	return 0;}

從上面可以看出:

被除數(shù)為負(fù)數(shù)時(shí),取余后為負(fù)號(hào)。

除數(shù)為負(fù)數(shù)時(shí),取余后為正數(shù)。

不同符號(hào)在C語(yǔ)言中雖然也有一定的規(guī)律,但我并不希望大家利用這個(gè)規(guī)律,而是利用定義老老實(shí)實(shí)的計(jì)算,畢竟這這是針對(duì)C語(yǔ)言的結(jié)論,在python中就不適用了,因?yàn)槎叩娜≌绞绞遣煌摹?/p>

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/123618.html

相關(guān)文章

  • 通過PHP實(shí)現(xiàn)一致性哈希算法

    摘要:通過虛擬節(jié)點(diǎn)優(yōu)化一致性算法為了提高一致性算法的平衡性,我們首先能夠想到的是,增加節(jié)點(diǎn)數(shù),但是機(jī)器畢竟是需要經(jīng)費(fèi)啊,不是說增就能隨意增,那就增加虛擬節(jié)點(diǎn),這樣就沒毛病了。 一、案例分析(1)問題概述 假設(shè)我們的圖片數(shù)據(jù)均勻的分配在三臺(tái)服務(wù)(分別標(biāo)注為服務(wù)器A,服務(wù)器B、服務(wù)器C)上面,現(xiàn)在我們要從里面取圖片,服務(wù)端在拿到這個(gè)請(qǐng)求后,怎么會(huì)指定,這張圖片是存在服務(wù)器A、服務(wù)器B,還是服務(wù)器...

    tulayang 評(píng)論0 收藏0
  • 深度剖析憑什么python中整型不會(huì)溢出

    摘要:前言本次分析基于解釋器,版本在時(shí)代,整型有類型和長(zhǎng)整型,長(zhǎng)整型不存在溢出問題,即可以存放任意大小的整數(shù)。在后,統(tǒng)一使用了長(zhǎng)整型。 前言 本次分析基于 CPython 解釋器,python3.x版本 在python2時(shí)代,整型有 int 類型和 long 長(zhǎng)整型,長(zhǎng)整型不存在溢出問題,即可以存放任意大小的整數(shù)。在python3后,統(tǒng)一使用了長(zhǎng)整型。這也是吸引科研人員的一部分了,適合大數(shù)據(jù)...

    MSchumi 評(píng)論0 收藏0
  • LeetCode 之 JavaScript 解答第二題 —— 兩數(shù)相加(Add Two Number

    摘要:多位數(shù)加多位數(shù),反轉(zhuǎn)鏈表轉(zhuǎn)化整數(shù),如果整數(shù)相加,可能會(huì)溢出,此方法行不通。直接進(jìn)行位數(shù)運(yùn)算,兩鏈表每取出一個(gè)就做運(yùn)算,將結(jié)果放入到新鏈表中。求和運(yùn)算會(huì)出現(xiàn)額外的進(jìn)位一般進(jìn)位與最高位進(jìn)位兩種情況。兩位數(shù)取模運(yùn)算。 Time:2019/4/2Title: ADD Two NumbersDifficulty: mediumAuthor:小鹿公眾號(hào):一個(gè)不甘平凡的碼農(nóng)。 題目二:ADD Two...

    Sunxb 評(píng)論0 收藏0
  • Python 魔法方法

    摘要:魔法方法基礎(chǔ)如果你想所以你寫調(diào)用初始化一個(gè)實(shí)例作為一個(gè)字符串的官方表示作為一個(gè)字符串作為字節(jié)數(shù)組作為格式化字符串方法在創(chuàng)建實(shí)例后調(diào)用如果你想控制創(chuàng)建過程請(qǐng)使用方法按照慣例應(yīng)該返回一個(gè)有效的表達(dá)式的字符串方法也被稱為你的迭代相關(guān)如果你想所以你 Python 魔法方法 基礎(chǔ): 如果你想... 所以,你寫... Python調(diào)用... 初始化一個(gè)實(shí)例 x = MyClass() x...

    187J3X1 評(píng)論0 收藏0
  • [LintCode] Hash Function

    摘要:又用到了取余公式,推導(dǎo)出。用循環(huán)對(duì)數(shù)組各位進(jìn)行轉(zhuǎn)換和相乘和累加。因?yàn)榈诙€(gè)取余公式證明乘積取余與乘數(shù)相加后再取余等價(jià)于乘積取余,所以在每個(gè)循環(huán)內(nèi)都進(jìn)行一次取余,以免乘積太大溢出。 Problem In data structure Hash, hash function is used to convert a string(or any other type) into an int...

    Dogee 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<