浅析java中的取整()和求余(%)
1.取整运算符
取整从字⾯意思理解就是被除数到底包含⼏个除数,也就是能被整除多少次,那么它有哪些需要注意的地⽅呢?先看下⾯的两
端代码:
inta=10;
intb=3;
doublec=a/b;
n(c);
第⼀段代码的运⾏结果是3.0,其中doublec=a/b;//c=(10/3)=(double)3=3.0,这⾥⾯涉及到⼀个低精度到⾼精度的隐式装
换。
inta=10;
intb=3;
doublec=(double)a/b;
n(c);
第⼆段代码的运⾏结果是3.3333333333333335,其中doublec=(double)a/b;等价于doublec=10.0/3.0;
减乘除计算,会先统⼀操作数的精度,其规则是先统⼀成精度⾼的数。
double型/int型、int型/double型,最后都转成double型/double型。
2.求余运算符
取余运算符是%是⼀个双⽬运算符,它的操作数通常是正整数也可以是负数甚⾄是浮点数,如果负数参与此运算,则结果的正
负取决于前⾯⼀个数是整数还是负数。
对于整数,java的取余运算规则如下
a%b=a-(a/b)*b
5%3=5-(5/3)*3=2
5%-3=5-(5/-3)*-3=2
-5%3=-5-(-5/3)*3=-2
-5%-3=-5-(-5/-3)*-3=-2
如果操作数中有浮点数则采⽤的规则为
a%b=a-(b*q),这⾥q=int(a/b)
5.2%3.1=5.2-1*3.1=2.1
5.2%-3.1=5.2-(-1)*(-3.1)=2.1
-5.2%3.1=-5.1-(-1)*3.1=-2.1
-5.2%-3.1=-5.1-(-1)*(-3.1)=-2.1
⽰例代码:
publicclassDivision_remainder{
publicstaticvoidmain(String[]args){
inta=13/5;
intb=13%5;
intc=5/13;
intd=5%13;
inte=13/-5;
intf=-13/5;
inth=-13%5;
intj=13%-5;
n(a+","+b);
n(c+","+d);
n(e+","+f);
n(h+","+j);
}
结果为:
2,3
0,5
-2,-2
-3,3
再来⼀个⼀个分析:
a=13/5,a=2,其实就是数学上的13/5,结果为2。
b=13%5,b=3,这也是数学上的运算,得出余数为3。
c=5/13,c=0,因为被除数⼩于除数,结果可以看成0.x,但是int类型是整数类型,所以结果只为0。
d=5%13,d=5,数学上规定:如果被除数⽐除数⼩,商是0,余数就是被除数本⾝。
e和f不⽤说了,结果都为-2。
但是h和j怎么是⼀个-3⼀个3呢,因为取余运算的符号是根据第⼀个运算数决定的,-13%5结果是-3,⽽13%-5结果则是3。
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
本文发布于:2022-12-08 05:54:31,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/88/64200.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |