黑马程序员技术交流社区
标题: 关于取模运算符 % 的一些问题求解释,求指导 [打印本页]
作者: 静水流华 时间: 2013-12-8 14:11
标题: 关于取模运算符 % 的一些问题求解释,求指导
问题1:在java中取模运算符% 是求余运算吗?
问题2:经过实践 3.2 % 2 =1.20000000000000002
5 % 2.2 = 0.5999999999999996
这是怎么回事呢?求解释(我在网上查找的一些质料说Java取余运算符 (%)
一个表达式的值除以另一个表达式的值,返回余数。
result = number1 % number2
参数
result 任何变量
number1 任何数值表达式
number2 任何数值表达式。
说明
取余(或余数)运算符用 number1 除以 number2 (把浮点数四舍五入为整数),然后只返回余数作为 result。例如,在下面的表达式中,A (即 result)等于 5。
A = 19 % 6.7
)
原文地址是:http://blog.csdn.net/wanlixingzhe/article/details/7359809
求解释,求指导
作者: 绕世界流浪丶 时间: 2013-12-8 15:22
3.2 % 2 =1.20000000000000002
5 % 2.2 = 0.5999999999999996
你这两个是double类型的运算!!!
算出的值肯定也是double类型的。。。
作者: 做个有理想的人 时间: 2013-12-8 15:43
double数据类型结果输出也是double类型了。
public class Remainder {
public static void main(String[] args) {
double d=37;
int i=37;
long l=37;
System.out.println(d% 5);//输出2.0
System.out.println(i % 5);//输出2
}
}
作者: 赵青超 时间: 2013-12-8 16:32
本帖最后由 赵青超 于 2013-12-8 16:47 编辑
- //浮点数很少能够精确运算 ,可能会出现舍入误差,
- //取模运算由以下测试可以看出规律
- System.out.println(5%3); // 1 int型,取余后浮点数四舍五入为整数
- System.out.println(5%3.2);// 1.7999999999999998 浮点数,结果也为浮点数,下同。
- System.out.println(5.2%3);// 2.2
- System.out.println(5.2%3.2);// 2.0
复制代码
作者: 翼展哈哈 时间: 2013-12-8 16:55
问题1:取模运算就是求余运算,详见http://baike.baidu.com/link?url=P362aoFciDy6DS14QyEmpsFQE2dMkxP_llxOO9dLaNflSUKlrLM4WSY3HFdcbqNvpghs3jLW5oS1XIPobzbw8_的第一句话;
问题2:取余运算,就是取余运算符前面的那个数num1除以取余运算符后面的那个数num2,得到的商一定是一个整数n,而结果余数则为num1 - n * num2;另外,你可能觉得,3.2 % 2 的结果应该是1.2,为什么会是1.20000000000000002呢?首先3.2%2的结果应该是double型的(因为java中默认被余数3.2为double型,根据运算时的自动类型提升,取余结果也应该是double型);其次,1.2也是double型呀,为什么结果就不是1.2呢?原因是,我们在输入的数据1.2(double型),在计算机存储结果其实是1.20000000000000000(含一定位数的有效数字),但也可能存储的结果会出现一点点儿差错,就变成了1.20000000000000002。这个结果其实跟1.2的误差特别特别小,小到不会影响计算,小到可以忽略并且它还是一偶然误差,不一定每次都出现且每次出现的误差值也不一定一致!
希望可以帮到您,有什么说的不对的,还请批评指正,共同进步!
作者: 静水流华 时间: 2013-12-8 20:05
谢谢谢谢谢谢谢谢谢谢谢谢谢谢
作者: 翼展哈哈 时间: 2013-12-8 22:21
不客气……
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |