Java別說取余(%)運(yùn)算簡單你真的會(huì)嗎
一,直擊現(xiàn)場
下面我來拋出幾道題:
說明m是商,n是余數(shù);
(1)正數(shù)%正數(shù)
3%2=m…….n
2%3=m…….n
(2)正數(shù)%負(fù)數(shù)或者負(fù)數(shù)%正數(shù)
-3%2=m…….n
3%-2=m…….n
-2%3=m…….n
2%-3=m…….n
(3)負(fù)數(shù)%負(fù)數(shù)
-3%-2=m…….n
-2%-3=m…….n
二,驗(yàn)證時(shí)刻
下面的結(jié)果沒有商m只有余數(shù)n;有沒有全部答對(duì)呢?沒有的話來看總結(jié)吧
三,總結(jié)
(1)
3%2=1…….1
2%3=0…….1
正數(shù)除以正數(shù):
商正余正
(2)
-3%2=-1…….-1
3%-2=-1…….1
-2%3=0…….-2
2%-3=0…….2
除數(shù)或者被除數(shù)其中之一為負(fù)數(shù):
先按正數(shù)計(jì)算,商負(fù)余同被除數(shù)
(余數(shù)和被除數(shù)同號(hào))你可能對(duì)結(jié)果0有疑問,你可以把它當(dāng)成負(fù)0,因?yàn)楸怀龜?shù)=除數(shù)*商+余數(shù),所以被除數(shù)是希望商乘以除數(shù)的結(jié)果是接近它的(如最后一組數(shù)被除數(shù)2是希望-3乘以0后的結(jié)果是接近它的,所以可以理解為0是負(fù)0,這樣就普遍適用了)
(3)
-3%-2=1…….-1
-2%-3=0…….-2
兩個(gè)數(shù)都是負(fù)數(shù):
先按正數(shù)計(jì)算,商正余負(fù)
(對(duì)于第二組可理解為0是正0,解釋同上)
關(guān)于Java負(fù)數(shù)取余和取模的計(jì)算
今天和同事聊到Java的取模(mod)和取余(rem),發(fā)現(xiàn)我們常用的基本都是正數(shù)取余或取模,那帶有負(fù)數(shù)的要怎么計(jì)算呢。
大部分的資料都會(huì)說:當(dāng)x和y的正負(fù)相同,取余和取模結(jié)果相同,當(dāng)x和y正負(fù)不同,取余結(jié)果的符號(hào)和x相同,取模結(jié)果的符號(hào)和y的符號(hào)相同。
但是這只是說了下結(jié)果的正負(fù),要怎么計(jì)算呢???
假設(shè):被除數(shù) a 除數(shù) b 商c 余數(shù)d 公式 a/b=c...d 可以變形為 d=a-b*c
那么關(guān)鍵就在于這個(gè)c取什么值。
舉個(gè)栗子:a=5,b=-2 ,那么 5÷(-2)=-2.5
取模的時(shí)候,因?yàn)閙od 函數(shù)采用了 floor 函數(shù),floor函數(shù)是向下取整的,所以-2.5向下取整就是-3,那么d=5-(-2)*(-3)=5-6=-1。
取余的時(shí)候,因?yàn)閞em 函數(shù)采用 fix 函數(shù),fix函數(shù)是向0取整的,所以-2.5向0取整就是-2,那么d=5-(-2)*(-2)=5-4=1。
OK!曉得了!
關(guān)于 Java 運(yùn)算中的求余 % 運(yùn)算,這里負(fù)數(shù)到底怎么算。
剛好他們用代碼做了舉例,下面兩張圖的控制臺(tái)都有輸出結(jié)果。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
java判斷今天,昨天,前天,不能用秒間隔的簡單實(shí)例
下面小編就為大家?guī)硪黄猨ava判斷今天,昨天,前天,不能用秒間隔的簡單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-03-03Java多線程面試題之交替輸出問題的實(shí)現(xiàn)
本文主要介紹了Java多線程面試題之交替輸出問題的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01MyBatis/mybatis-plus項(xiàng)目打印SQL的方法實(shí)現(xiàn)
SpringBoot項(xiàng)目中,經(jīng)常需要打印SQL語句及其參數(shù),本文就來介紹一下MyBatis/mybatis-plus項(xiàng)目打印SQL的方法實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-07-07Java 對(duì)象序列化 NIO NIO2詳細(xì)介紹及解析
這篇文章主要介紹了Java 對(duì)象序列化 NIO NIO2詳細(xì)介紹及解析的相關(guān)資料,序列化機(jī)制可以使對(duì)象可以脫離程序的運(yùn)行而對(duì)立存在,需要的朋友可以參考下2017-02-02MyBatis學(xué)習(xí)教程(七)-Mybatis緩存介紹
MyBatis緩存分為一級(jí)緩存和二級(jí)緩存一級(jí)緩存,本文給大家介紹mybatis緩存知識(shí),非常不錯(cuò)具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧2016-05-05java如何接收和發(fā)送ASCII數(shù)據(jù)
這篇文章主要介紹了java如何接收和發(fā)送ASCII數(shù)據(jù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09