题目:
请帮小明同学设计一个程序,输入上次考试成绩(int)和本次考试成绩(int),然后输出成绩提高的百分比,保留两位小数位(例如,21.75%)。
思路:
按照题目要求,通过Scanner类输入两次的成绩,并且两次成绩定义都是整型int,然而输出这里要输出小数,所以在进行百分比计算时首先进行强制转换为小数格式:(double),利用java在做运算时如果有double类型则首先转换为double类型再运算。
在输出格式时,要输出百分比,则应首先对上面的结果乘以100,然后再保留两位小数即可。
代码:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入上次考试成绩:");
int lastScore = sc.nextInt();
System.out.println("请输入本次考试成绩:");
int thisScore = sc.nextInt();
double percentOfScoreImprove = ((double)thisScore-lastScore)/lastScore*100;
System.out.printf("成绩提升了:%.2f%%",percentOfScoreImprove);
}
输出:
注意:
- 整数之间的运算得到的结果为整数部分,即也是整数,非四舍五入,而是保留整数部分。
- 不同类型的整数运算时结果为较大类型的整型,如int和short进行运算时结果为int,因为short首先会被转换为int类型。
- 浮点数无法精确表示,如0.1换算为计算机中表示数的二进制就是无限循环小数,所以称为浮点数,float和double都是。比较浮点数是否相等一般常用浮点数之差是否小于一个很小的数。
- 整型和浮点型之间运算时整型会自动被提升为浮点型。但是两个整型运算没办法提升为浮点型,结果仍为整数部分。