Lua中關(guān)于求模與求余的區(qū)別介紹
我覺(jué)得很多人搞不清楚這兩個(gè)概念的區(qū)別,剛好在翻譯lua手冊(cè)時(shí)遇到%與math.fmod這兩個(gè)操作,順便做一下說(shuō)明吧。
求模與求余的區(qū)別。
假設(shè)對(duì)a與b兩個(gè)整數(shù)做求?;蚯笥嗖僮?。那么第一步是先求整數(shù)商c,即a / b的值,第二步是計(jì)算?;蛴鄶?shù):a - c * b。求模與求余的區(qū)別在于怎么處理a / b的值。
求模運(yùn)算時(shí),a / b的結(jié)果向無(wú)窮小方向舍入,求余運(yùn)算時(shí)a / b的結(jié)果向0方向舍入。
因此,求模時(shí)結(jié)果的符號(hào)與b一致,求余時(shí)結(jié)果的符號(hào)與a一致。
在Lua中4%(-3)等于-2,由此可以看出lua的%是求模操作而不是求余操作。4/(-3)向無(wú)窮小舍入為-2,則模數(shù)為4 - (-2 * -3) = -2。
在Lua中math.fmod(4,-3)等于1,因此fmod是求余操作而不是求模操作。4/(-3)向0方向舍入為-1,則余數(shù)為4-(-1 * -3)= 1。
很容易可以得出另一個(gè)結(jié)論:如果a,b都是正整數(shù)的話,求模與求余沒(méi)有區(qū)別。
相關(guān)文章
Lua基礎(chǔ)教程之表(Table)學(xué)習(xí)筆記
這篇文章主要介紹了Lua基礎(chǔ)教程之表(Table)學(xué)習(xí)筆記,本文來(lái)自個(gè)人總結(jié),需要的朋友可以參考下2014-09-09Lua中變相實(shí)現(xiàn)continue跳出循環(huán)
這篇文章主要介紹了Lua中變相實(shí)現(xiàn)continue跳出循環(huán),Lua中是沒(méi)有continue的,本文使用一個(gè)小技巧實(shí)現(xiàn)了跟continue一樣的效果,需要的朋友可以參考下2014-12-12Openresty服務(wù)器使用lua腳本寫(xiě)的Hello World簡(jiǎn)單實(shí)例
這篇文章主要介紹了Openresty服務(wù)器使用lua腳本寫(xiě)的Hello World簡(jiǎn)單實(shí)例,OpenResty (也稱(chēng)為 ngx_openresty)是一個(gè)全功能的 Web 應(yīng)用服務(wù)器。它打包了標(biāo)準(zhǔn)的 Nginx 核心,很多的常用的第三方模塊,以及它們的大多數(shù)依賴(lài)項(xiàng),需要的朋友可以參考下2015-04-04Lua中實(shí)現(xiàn)遞歸刪除一個(gè)文件夾
這篇文章主要介紹了Lua中實(shí)現(xiàn)遞歸刪除一個(gè)文件夾,本文給出了使用C++和使用純LUA兩種方式實(shí)現(xiàn),需要的朋友可以參考下2015-01-01Lua Table轉(zhuǎn)C# Dictionary的方法示例
這篇文章主要給大家介紹了關(guān)于Lua Table轉(zhuǎn)C# Dictionary的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-03-03Lua教程(六):綁定一個(gè)簡(jiǎn)單的C++類(lèi)
這篇文章主要介紹了Lua教程(六):綁定一個(gè)簡(jiǎn)單的C++類(lèi),本文是最后一篇C/C++與Lua交互的教程,其他教程請(qǐng)參閱本文下方的相關(guān)文章,需要的朋友可以參考下2014-09-09