黑马程序员技术交流社区
标题: 搞不懂这个原理了……有谁明白? [打印本页]
作者: 向阳泪无痕 时间: 2013-11-18 21:39
标题: 搞不懂这个原理了……有谁明白?
为什么System.out.println(1/2);结果是0
作者: Misaeじ 时间: 2013-11-18 21:45
两个int类型的数相除,结果还应该是int类型的 ,只取前面的整数部分,所以是0
作者: ReFly 时间: 2013-11-18 21:57
本帖最后由 ReFly 于 2013-11-18 22:14 编辑
1和2的默认类型是int 型,所以除了以后默认赋给int型。(以被除数为准,除后赋给被除数) 0.5赋给int,就是0。相当于(int)0.5。
值类型都有默认类型。1,2,3这种默认为int
普通小数默认为double
和下面一题同理:
3.下列代码的输出结果:(C)
System.out.println(10/3);
A.1
B.1.0
C.3
D.3.3333333333333335
"/" 并不是整除的意思, println()函数打印这个表达式,会看这个表达式最后所得到的默认类型。
下面例子:
double b=1/2; // "/" 运算符看被除数默认类型。
System.out.println(b);
结果是:0.0
System.out.println(1.0/2);
结果是0.5
作者: 梦飞扬 时间: 2013-11-18 22:13
1与2都是int型的 两数相除结果也取整数 所以为0
作者: 乔_博_文 时间: 2013-11-18 22:23
1/2(1除以2)你可以这么理解:1里面有0个2,类似于6/3(6除以3)6里面有2个3。因为都是int型,所以1/2是0而不是0.0, 和6/3是2而不是2.0的道理一样的
作者: 菜不鸟 时间: 2013-11-18 23:47
"/" 这个就是除号. 由于 1/2 都是整数. 是整除所以默认结果会整数 0;
如果 你一开始这样声明的话 比如 double i=1.0;double b=2.0;System.out.pritln(i/b); //这个时候结果就是等于0.5 了
作者: L_t 时间: 2013-11-19 15:36
整形与整形之间进行预算,结果自动取整
作者: L_t 时间: 2013-11-19 15:36
整形与整形之间进行预算,结果自动取整
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |