需要java double才能向下舍入

时间:2014-09-17 22:15:18

标签: java math int double java.util.scanner

我需要java来保持结果的真实值,这是我的代码:

`

Scanner scan = new Scanner(System.in);
int test1;
int test2;
int quiz1;
int quiz2;
int quiz3;
double homework;
System.out.println("Please enter your test grades.");
test1 = scan.nextInt();
test2 = scan.nextInt();
System.out.println("Please enter you quiz grades.");
quiz1 = scan.nextInt();
quiz2 = scan.nextInt();
quiz3 = scan.nextInt();
System.out.println("Please enter your homework average.");
homework = scan.nextDouble();
double quizaverage = (quiz1 + quiz2 + quiz3)/3;
double testaverage = (test1 + test2)/2;
System.out.println("Test Average " + (testaverage) + "");
System.out.println("quiz Average " + (quizaverage) + "");
double finalgrade = (testaverage) * 0.5 + (quizaverage)* 0.3 + (homework) * 0.2;
System.out.println("Final Grade " + (finalgrade) + "");`

我输入的值:  *test 1=89, test 2=86, quiz 1=84, quiz 2=84, quiz 3=83, homework=90.12*

一切正常但问题是我需要测试平均值变量和测验平均值变量才能向下舍入,因为我的测试平均值为 87.0 83.0我的测验平均值当我运行程序时,这些值会影响最终成绩变量,因为我需要得到86.874的最终成绩,而不是86.424。所以我的真实值 87.5(测试平均值) 83.66666666666667(测验平均值)来获得真正的最终成绩。基本上我需要知道如何防止java四舍五入(我认为)。我希望我没有让它变得复杂,所有的帮助都表示赞赏。

1 个答案:

答案 0 :(得分:1)

您正在执行整数除法,在Java中会产生另一个int。你需要用数学强制浮点除法;分配给double并不强制它。使用浮点文字,最后加.0

double quizaverage = (quiz1 + quiz2 + quiz3)/3.0;
double testaverage = (test1 + test2)/2.0;

(将任一操作数转换为double也可以。)