作业帮 > 综合 > 作业

int m = 1; int n = 2; double y = 2.0; System.out.println(m +

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/17 22:12:14
int m = 1; int n = 2; double y = 2.0; System.out.println(m + n); //3 System.out.println(m - n); //-1
int m = 1;
int n = 2;
double y = 2.0;
System.out.println(m + n); //3
System.out.println(m - n); //-1
System.out.println(m * n); //2
System.out.println(m / n); //0
System.out.println(m / y); //0.5
System.out.println(m / 2.0); //0.5
System.out.println(m % n); //1
我就想问,除里面除法,跟求佘怎么算,可以通俗的讲下吗
除法和求余就是数学里的那种啊,除法得到的是商,求余得到的是余数.
这里有类型转换的问题.两个int相除,就是整数除整数,得到的结果没有小数位
int和double相除,会转换会精度高的double,所以相当于1.0/2.0,而且结果也是double
再问: System.out.println(m / n); //0 我就想问1/2怎么能等于0 还有1/2.0怎么等于0.5
再答: 1/2可能感觉上应该是0.5……所以还是类型转换的问题,而不是怎么做除法的问题。 一次计算涉及两个数,这两个数,定义的类型可能是不一样的。如果类型不一样,那么把低精度的转换到高精度的,再做计算。 这里1/2,是两个int相除,不需要类型转换,并且得到的结果也是int型的。int是整型,没有0.5,只有0,1,2,3...所以c/c++, c#,java等都作同样的处理:只保留整数位。所以0.5就成了0了。类似的1.1,1.9999强制转换成int都是1,0.001,0.99999强制转换为int都是0 而1/2.0,1是int,2.0是double(这里写2就是int,写2.0就是double),转换成较高精度的double计算,也就是1.0/2.0,得到的也是double,自然是0.5