Java中 % 與Math.floorMod() 區(qū)別詳解
%為取余(rem),Math.floorMod()為取模(mod)
取余取模有什么區(qū)別呢?
對(duì)于整型數(shù)a,b來(lái)說(shuō),取模運(yùn)算或者取余運(yùn)算的方法都是:
1.求 整數(shù)商: c = a/b;
2.計(jì)算?;蛘哂鄶?shù): r = a - c*b.
區(qū)別是:
取余運(yùn)算在計(jì)算商值向0方向舍棄小數(shù)位
取模運(yùn)算在計(jì)算商值向負(fù)無(wú)窮方向舍棄小數(shù)位
比如a=4,b=-3時(shí),a/b = -1.3333...
此時(shí),取余c=1,取模c=-2
(%在不同語(yǔ)言中有不同的意義,比如Java或者c/c++中%為取余,python中%則為取模)
%(取余)運(yùn)算:
1、結(jié)果的符號(hào):結(jié)果的符號(hào)與被除數(shù)的符號(hào)相同,例:x%y 中 為 x 的符號(hào) (結(jié)果的絕對(duì)值與x、y都為正數(shù)時(shí)相同)
2、x%y 中如果 x < y 則結(jié)果為x
3、0%x 結(jié)果為 0
4、x%0 除0錯(cuò)誤
Math.floorMod(x,y) (取模):
1、簡(jiǎn)單記憶:與y符號(hào)相同
2、x > y:結(jié)果的絕對(duì)值與 % 運(yùn)算相同
3、x < y:①符號(hào)相同 結(jié)果的絕對(duì)值為 y - x ;②符號(hào)不同 結(jié)果的絕對(duì)值與 % 運(yùn)算相同
x | y | x%y | Math.floorMod(x,y) |
---|---|---|---|
- | + | - | + |
+ | - | + | - |
- | - | - | - |
+ | + | + | + |
補(bǔ)充知識(shí):java.lang.Math
了解和記錄一下math類的各種方法,以便以后查找
math.sin:求出sin值
math.cos:求出cos值
math.tan:求出tan值
sinθ=cosθ*tanθ
math.asin:根據(jù)sin值求角度
math.acos:根據(jù)cos值求角度
math.atan:根據(jù)tan值求角度
math.toRadians:根據(jù)角度求弧度
math.toDegree:根據(jù)弧度求角度
math.exp:E的X冪
math.log:以E為底的對(duì)數(shù)
math.log10:以10為底的對(duì)數(shù)
math.sqrt:x的二次方根
math.cbrt:x的三次方根
math.IEEEremainder:根據(jù)規(guī)定的兩個(gè)參數(shù)計(jì)算剩余操作
*根據(jù)ieee 754標(biāo)準(zhǔn)。
math.ceil:返回最近的且大于的整數(shù)
math.floor:返回最近的且小于的整數(shù)
math.rint:返回最接近的整數(shù),如果剛好居中,則取偶數(shù)
math.atan2:結(jié)果angel是一個(gè)弧度值,也可以表示相對(duì)直角三角形對(duì)角的角,其中 x 是臨邊邊長(zhǎng),而 y 是對(duì)邊邊長(zhǎng),計(jì)算兩點(diǎn)間連線的夾角.(3,3)和(5,5)和原點(diǎn)構(gòu)成的線的夾角,math.atan2(3-5,3-5),計(jì)算出來(lái)是弧度值,再轉(zhuǎn)成角度即可。
math.pow:x的y次冪
math.round:跟四舍五入很像,但是不是。小數(shù)點(diǎn)后等于5,取整數(shù),正數(shù),整數(shù)+1,負(fù)數(shù),整數(shù)不變,大于5,整數(shù)部分+1,正負(fù)號(hào)不變,小于5,取整數(shù)
math.random:隨機(jī)返回0-1之間的無(wú)符號(hào)double值
math.addExact:求int和long的和值,超過(guò)范圍則拋異常
math.substractExact:求int和Long的差值,超出范圍則拋異常
math.multiplyExact:求int和long的乘值,超出范圍則拋異常
math.incrementExact:求int和long的+1值,超出范圍則拋異常
math.decrementExact:求int和Long的-1值,超出范圍則拋異常
math.negateExact:求int和long的取反值,超出范圍則拋異常
math.toIntExact:求Long的int值,超出范圍則拋異常
math.floorDiv:第一個(gè)參數(shù)除以第二參數(shù),然后針對(duì)結(jié)果執(zhí)行floor操作,返回小于或等于商的整數(shù)
math.floorMod: return x-floorDiv(x,y)*y;
math.abs:取絕對(duì)值
math.max:取最大值
math.min:取最小值
math.sinh:雙曲正弦函數(shù)sinh(x)=(exp(x)-exp(-x))/2.0
math.cosh:雙曲余弦函數(shù)cosh(x)=(exp(x)+exp(-x))/2.0
math.tanh:tanh(x)=sinh(x)/cosh(x)
以上這篇Java中 % 與Math.floorMod() 區(qū)別詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于Spring Boot獲取bean的3種方式
這篇文章主要介紹了關(guān)于Spring Boot獲取bean的3種方式,在spring中ApplicationContext這個(gè)上下文對(duì)象是獲取bean的基礎(chǔ),需要的朋友可以參考下2023-04-04Java?Kryo,Protostuff,Hessian序列化方式對(duì)比
這篇文章主要介紹了Java?Kryo,Protostuff,Hessian序列化方式對(duì)比,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-07-07mybatis+springboot中使用mysql的實(shí)例
在軟件開(kāi)發(fā)中,數(shù)據(jù)庫(kù)的引入是必不可少的,這里來(lái)展現(xiàn)一下通過(guò)mybatis框架在springboot中使用mysql,具有一定的參考價(jià)值,感興趣的可以了解一下2021-07-07jstl標(biāo)簽基礎(chǔ)開(kāi)發(fā)步驟(詳解)
下面小編就為大家?guī)?lái)一篇jstl標(biāo)簽基礎(chǔ)開(kāi)發(fā)步驟(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05解決mybatis plus 分頁(yè)查詢有條數(shù),total和pages都是零的問(wèn)題
這篇文章主要介紹了解決mybatis plus 分頁(yè)查詢有條數(shù),total和pages都是零的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11java按照模板導(dǎo)出pdf或word文件詳細(xì)代碼
有時(shí)候業(yè)務(wù)中我們需要使用pdf模板生成一份pdf文件,下面這篇文章主要給大家介紹了關(guān)于java按照模板導(dǎo)出pdf或word文件的相關(guān)資料,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下2023-11-11詳談異步log4j2中的location信息打印問(wèn)題
這篇文章主要介紹了詳談異步log4j2中的location信息打印問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12SpringMVC如何域?qū)ο蠊蚕頂?shù)據(jù)
在Spring MVC中,可以使用域?qū)ο髞?lái)共享數(shù)據(jù),域?qū)ο笫且粋€(gè)Map類型的對(duì)象,可以在請(qǐng)求處理方法之間共享數(shù)據(jù),本文給大家介紹SpringMVC 域?qū)ο蠊蚕頂?shù)據(jù)的示例代碼,一起看看吧2023-09-09Spring中存儲(chǔ)Bean的常見(jiàn)注解方式
Spring框架中的控制反轉(zhuǎn)(IoC)和依賴注入(DI)是核心概念,實(shí)現(xiàn)了對(duì)象的解耦和動(dòng)態(tài)依賴,IoC容器負(fù)責(zé)對(duì)象的生命周期和對(duì)象間的依賴關(guān)系,通過(guò)DI方式注入依賴,本文介紹Spring中存儲(chǔ)Bean的常見(jiàn)注解方式,感興趣的朋友一起看看吧2024-09-09