java,关于计算百分率的问题,希望高手指教!

/*循环录入java课的学生成绩,统计分数大于80分(包括等于)的学生比例.代码如下:*/importjava.util.*;publicclassfirst{publi... /*循环录入java课的学生成绩,统计分数大于80分(包括等于)的学生比例.代码如下:*/
import java.util.*;
public class first {
public static void main(String[] args) {
int score; //每个学生的成绩
int total; //班级总人数
int num=0; //成绩大于或等于80分的人数
System.out.print("输入班级的总人数:");
total=new Scanner(System.in).nextInt();

for(int i=1;i<=total;i++) {
System.out.print("输入第"+i+"位的成绩:");
score=new Scanner(System.in).nextInt();
if(score<=80) {
continue;
}
num++;
}
System.out.println("大于80分的人数是:"+num);
double rate=(double)num/total*100;
System.out.print("大于80分的人数的百分率为:"+rate+"%");
}
}
想不明白为什么"double rate=(double)num/total*100;"里的num前面要加上double???
int型的num要转换成double型的rate,本来就是放大转换啊!
而且我做过试验了,把num前的double去掉,无论有几个大于等于80分的人数,百分率总是0%,想不明白为什么,请高手赐教!!!
展开
 我来答
vannn
2008-07-17 · TA获得超过167个赞
知道小有建树答主
回答量:172
采纳率:0%
帮助的人:145万
展开全部
num/total小于1,num、total是int型,num/total就是int,结果是0
如果加上(double),num/total就是double,不会截成0了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hardBonedKe
2008-07-17 · 超过16用户采纳过TA的回答
知道答主
回答量:56
采纳率:0%
帮助的人:53.5万
展开全部
你的num/total*100是Integer整型,rate是双精度double型。
num/total*100想要转换成double肯定需要强转的。
int型是不能带小数点的吧,好好想想,数据类型的转换。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
谭学昆
2008-07-17 · 超过21用户采纳过TA的回答
知道答主
回答量:87
采纳率:0%
帮助的人:0
展开全部
double rate=num/total*100虽然这样语法上没错,但他得到的不是小数,你要求的是百分率,所以先把num转换成double,在除
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
天才也有苦恼
2008-07-17 · TA获得超过195个赞
知道小有建树答主
回答量:140
采纳率:0%
帮助的人:0
展开全部
明显你整数的除法没搞清楚。
比如:
int a=8;
int b=10;
a/b的结果只取整数位为0。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
无敌庆
2008-07-18
知道答主
回答量:29
采纳率:0%
帮助的人:0
展开全部
看了 老长时间终于看明白了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式