Java別說取余(%)運算簡單你真的會嗎
一,直擊現(xiàn)場
下面我來拋出幾道題:
說明m是商,n是余數(shù);
(1)正數(shù)%正數(shù)
3%2=m…….n
2%3=m…….n
(2)正數(shù)%負數(shù)或者負數(shù)%正數(shù)
-3%2=m…….n
3%-2=m…….n
-2%3=m…….n
2%-3=m…….n
(3)負數(shù)%負數(shù)
-3%-2=m…….n
-2%-3=m…….n
二,驗證時刻
下面的結(jié)果沒有商m只有余數(shù)n;有沒有全部答對呢?沒有的話來看總結(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ù)其中之一為負數(shù):
先按正數(shù)計算,商負余同被除數(shù)
(余數(shù)和被除數(shù)同號)你可能對結(jié)果0有疑問,你可以把它當成負0,因為被除數(shù)=除數(shù)*商+余數(shù),所以被除數(shù)是希望商乘以除數(shù)的結(jié)果是接近它的(如最后一組數(shù)被除數(shù)2是希望-3乘以0后的結(jié)果是接近它的,所以可以理解為0是負0,這樣就普遍適用了)
(3)
-3%-2=1…….-1
-2%-3=0…….-2
兩個數(shù)都是負數(shù):
先按正數(shù)計算,商正余負
(對于第二組可理解為0是正0,解釋同上)
關(guān)于Java負數(shù)取余和取模的計算
今天和同事聊到Java的取模(mod)和取余(rem),發(fā)現(xiàn)我們常用的基本都是正數(shù)取余或取模,那帶有負數(shù)的要怎么計算呢。
大部分的資料都會說:當x和y的正負相同,取余和取模結(jié)果相同,當x和y正負不同,取余結(jié)果的符號和x相同,取模結(jié)果的符號和y的符號相同。
但是這只是說了下結(jié)果的正負,要怎么計算呢???
假設:被除數(shù) a 除數(shù) b 商c 余數(shù)d 公式 a/b=c...d 可以變形為 d=a-b*c
那么關(guān)鍵就在于這個c取什么值。
舉個栗子:a=5,b=-2 ,那么 5÷(-2)=-2.5
取模的時候,因為mod 函數(shù)采用了 floor 函數(shù),floor函數(shù)是向下取整的,所以-2.5向下取整就是-3,那么d=5-(-2)*(-3)=5-6=-1。
取余的時候,因為rem 函數(shù)采用 fix 函數(shù),fix函數(shù)是向0取整的,所以-2.5向0取整就是-2,那么d=5-(-2)*(-2)=5-4=1。
OK!曉得了!
關(guān)于 Java 運算中的求余 % 運算,這里負數(shù)到底怎么算。
剛好他們用代碼做了舉例,下面兩張圖的控制臺都有輸出結(jié)果。


以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java雜談之類和對象 封裝 構(gòu)造方法以及代碼塊詳解
在現(xiàn)實世界中,真實存在的東西,比如吉普車,卡丁車,貨車。我們在認識它的時候就會在腦海中將它抽象為一種類別叫做車。 好了,那再計算機世界中,它同樣的也會這樣做2021-09-09
Java中Springboot集成Kafka實現(xiàn)消息發(fā)送和接收功能
Kafka是一個高吞吐量的分布式發(fā)布-訂閱消息系統(tǒng),主要用于處理大規(guī)模數(shù)據(jù)流,它由生產(chǎn)者、消費者、主題、分區(qū)和代理等組件構(gòu)成,Kafka可以實現(xiàn)消息隊列、數(shù)據(jù)存儲和流處理等功能,在Java中,可以使用Spring Boot集成Kafka實現(xiàn)消息的發(fā)送和接收,感興趣的朋友跟隨小編一起看看吧2025-01-01
詳解用Spring Boot零配置快速創(chuàng)建web項目
本篇文章主要介紹了詳解用Spring Boot零配置快速創(chuàng)建web項目,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-03-03
Spring?Boot?教程之創(chuàng)建項目的三種方式
這篇文章主要分享了Spring?Boot?教程之創(chuàng)建項目的三種方式,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-05-05

