欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言中四種取整方式,取余/取模運(yùn)算以及負(fù)數(shù)取模問題詳解

 更新時(shí)間:2021年09月07日 09:57:31   作者:精致的灰(>_<)  
這篇文章主要介紹了C語言中四種取整方式及負(fù)數(shù)取模問題,包括了算法的分析與改進(jìn),是很多程序設(shè)計(jì)競賽中常見的算法,需要的朋友可以參考下

零向取整、負(fù)無窮向取整、正無窮向取整、四舍五入取整

如果將一個(gè)浮點(diǎn)數(shù)賦值給整形,只會保存整數(shù)位:

在這里插入圖片描述

這種取整方式為零向取整,C語言默認(rèn)采用的是這種方式

在這里插入圖片描述

C語言中也有對應(yīng)的零向取整函數(shù):

在這里插入圖片描述

在這里插入圖片描述

同理還有一種函數(shù)是負(fù)無窮大取整:

在這里插入圖片描述

在這里插入圖片描述

它的取整方案是向負(fù)無窮大取整:

在這里插入圖片描述

有地板取整,當(dāng)然也有正無窮大取整的函數(shù):

在這里插入圖片描述

在這里插入圖片描述

它的取整方式是向正無窮大取整:

在這里插入圖片描述

最后,還有四舍五入取整的函數(shù):

在這里插入圖片描述

在這里插入圖片描述

取模/取余

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

但是如果對負(fù)數(shù)取模呢?

在C語言中:

在這里插入圖片描述

在Python中:

在這里插入圖片描述

可以看到這兩種取模結(jié)果是不一樣的。

a=-10,d=3;
-10=(-3)*3+(-1)  q=-3,r=-1;  C語言
-10=(-4)*3+2  q=-4,r=2; Python

由上面的例子可以看出,具體余數(shù)r的大小,本質(zhì)是取決于商q的。 而商取決于除法計(jì)算的時(shí)候的取整規(guī)則。

比如上面的-10/3=-3.3333,如果將商向零整,則結(jié)果為-3,此時(shí)余數(shù)為-1,而如果商向負(fù)無窮方向取整,則結(jié)果為-4,此時(shí)余數(shù)為2。

這兩種取整方式,就是取模和取余的區(qū)別:

取余或者取模,都應(yīng)該要算出商,然后才能得出余數(shù)。
取余:盡可能讓商,進(jìn)行向零取整。
取模:盡可能讓商,向負(fù)無窮方向取整

這兩種方式對于商是正數(shù)的情況沒有區(qū)別,因?yàn)榱阆蛉≌拓?fù)無窮方向取整的結(jié)果是一樣的。但如果商的結(jié)果是負(fù)數(shù),則取余和取模的結(jié)果是不一樣的。

所以,參與取余的兩個(gè)數(shù)據(jù),如果同符號,取模等價(jià)于取余,因?yàn)樯淌钦龜?shù),如果不同符號,則取模和取余不同。

在這里插入圖片描述

綜上,C語言中的%本質(zhì)其實(shí)是取余,Python中的%本質(zhì)是取模。

并且通過上面的分析,我們可以得出結(jié)論:

具體余數(shù)r的大小,本質(zhì)是取決于商q的。而商,又取決于除法計(jì)算的時(shí)候,取整規(guī)則。
取余和取模: 取余盡可能讓商,進(jìn)行向零取整。取模盡可能讓商,向負(fù)無窮方向取整。
參與取余的兩個(gè)數(shù)據(jù),如果同符號,取模等價(jià)于取余。
如果參與取余的兩個(gè)數(shù)據(jù)符號不同,在C語言中(或者其他采用向0取整的語言如:C++,Java),余數(shù)符號,與被除數(shù)相同。(因?yàn)椴捎玫南?取整)

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • C++實(shí)現(xiàn)商品管理程序

    C++實(shí)現(xiàn)商品管理程序

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)商品管理程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • C++11線程、互斥量以及條件變量示例詳解

    C++11線程、互斥量以及條件變量示例詳解

    這篇文章主要介紹了C++11線程、互斥量以及條件變量,C++11增加了線程以及線程相關(guān)的類,很方便地支持了并發(fā)編程,使得編寫多線程程序的可移植性得到了很大的提高,本文通過實(shí)例代碼給大家詳細(xì)講解,需要的朋友可以參考下
    2023-03-03
  • Qt數(shù)據(jù)庫應(yīng)用之通用數(shù)據(jù)庫同步

    Qt數(shù)據(jù)庫應(yīng)用之通用數(shù)據(jù)庫同步

    數(shù)據(jù)庫同步的主要功能是將本地的數(shù)據(jù)庫記錄同步到遠(yuǎn)程的數(shù)據(jù)庫。本文將利用Qt實(shí)現(xiàn)通用數(shù)據(jù)庫同步功能,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-03-03
  • 如何查看進(jìn)程實(shí)際的內(nèi)存占用情況詳解

    如何查看進(jìn)程實(shí)際的內(nèi)存占用情況詳解

    本篇文章是對如何查看進(jìn)程實(shí)際的內(nèi)存占用情況進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • VSCode插件開發(fā)全攻略之打包、發(fā)布、升級的詳細(xì)教程

    VSCode插件開發(fā)全攻略之打包、發(fā)布、升級的詳細(xì)教程

    這篇文章主要介紹了VSCode插件開發(fā)全攻略之打包、發(fā)布、升級的教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 詳解C語言之動(dòng)態(tài)內(nèi)存管理

    詳解C語言之動(dòng)態(tài)內(nèi)存管理

    本文主要介紹了C語言動(dòng)態(tài)內(nèi)存管理的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 詳解C++ STL vector容量(capacity)和大小(size)的區(qū)別

    詳解C++ STL vector容量(capacity)和大小(size)的區(qū)別

    這篇文章主要介紹了詳解C++ STL vector容量(capacity)和大小(size)的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • c++連接mysql5.6的出錯(cuò)問題總結(jié)

    c++連接mysql5.6的出錯(cuò)問題總結(jié)

    下面小編就為大家?guī)硪黄猚++連接mysql5.6的出錯(cuò)問題總結(jié)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧,祝大家游戲愉快哦
    2016-12-12
  • C++實(shí)現(xiàn)LeetCode(241.添加括號的不同方式)

    C++實(shí)現(xiàn)LeetCode(241.添加括號的不同方式)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(241.添加括號的不同方式),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C/C++題解LeetCode1295統(tǒng)計(jì)位數(shù)為偶數(shù)的數(shù)字

    C/C++題解LeetCode1295統(tǒng)計(jì)位數(shù)為偶數(shù)的數(shù)字

    這篇文章主要為大家介紹了C/C++題解LeetCode1295統(tǒng)計(jì)位數(shù)為偶數(shù)的數(shù)字示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01

最新評論