Java別說(shuō)取余(%)運(yùn)算簡(jiǎn)單你真的會(huì)嗎
一,直擊現(xiàn)場(chǎng)
下面我來(lái)拋出幾道題:
說(shuō)明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éi)有商m只有余數(shù)n;有沒(méi)有全部答對(duì)呢?沒(méi)有的話來(lái)看總結(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有疑問(wèn),你可以把它當(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ì)說(shuō):當(dāng)x和y的正負(fù)相同,取余和取模結(jié)果相同,當(dāng)x和y正負(fù)不同,取余結(jié)果的符號(hào)和x相同,取模結(jié)果的符號(hào)和y的符號(hào)相同。
但是這只是說(shuō)了下結(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é)果。


以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
MyBatis參數(shù)處理實(shí)現(xiàn)方法匯總
這篇文章主要介紹了MyBatis參數(shù)處理實(shí)現(xiàn)方法匯總,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
SpringBoot項(xiàng)目中遇到的BUG問(wèn)題及解決方法
這篇文章主要介紹了SpringBoot項(xiàng)目中遇到的BUG問(wèn)題及解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11
Java實(shí)現(xiàn)解壓zip和rar包的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何使用Java實(shí)現(xiàn)解壓zip和rar包,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01
Java雜談之類和對(duì)象 封裝 構(gòu)造方法以及代碼塊詳解
在現(xiàn)實(shí)世界中,真實(shí)存在的東西,比如吉普車,卡丁車,貨車。我們?cè)谡J(rèn)識(shí)它的時(shí)候就會(huì)在腦海中將它抽象為一種類別叫做車。 好了,那再計(jì)算機(jī)世界中,它同樣的也會(huì)這樣做2021-09-09
Java中Springboot集成Kafka實(shí)現(xiàn)消息發(fā)送和接收功能
Kafka是一個(gè)高吞吐量的分布式發(fā)布-訂閱消息系統(tǒng),主要用于處理大規(guī)模數(shù)據(jù)流,它由生產(chǎn)者、消費(fèi)者、主題、分區(qū)和代理等組件構(gòu)成,Kafka可以實(shí)現(xiàn)消息隊(duì)列、數(shù)據(jù)存儲(chǔ)和流處理等功能,在Java中,可以使用Spring Boot集成Kafka實(shí)現(xiàn)消息的發(fā)送和接收,感興趣的朋友跟隨小編一起看看吧2025-01-01
詳解用Spring Boot零配置快速創(chuàng)建web項(xiàng)目
本篇文章主要介紹了詳解用Spring Boot零配置快速創(chuàng)建web項(xiàng)目,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-03-03
實(shí)例講解Java設(shè)計(jì)模式編程中如何運(yùn)用代理模式
這篇文章主要介紹了Java設(shè)計(jì)模式編程中如何運(yùn)用代理模式,文中舉了普通代理和強(qiáng)制代理的例子作為代理模式的擴(kuò)展內(nèi)容,需要的朋友可以參考下2016-02-02
Spring?Boot?教程之創(chuàng)建項(xiàng)目的三種方式
這篇文章主要分享了Spring?Boot?教程之創(chuàng)建項(xiàng)目的三種方式,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-05-05

