【问题标题】:Need java double to not round down需要 java double 才能不舍入
【发布时间】:2014-09-17 22:15:17
【问题描述】:

我需要 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*

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

【问题讨论】:

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


【解决方案1】:

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

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

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

【讨论】:

  • 我还发现使用演员表并使其 ((double)quiz1 + (double)quiz2 + (double)quiz3)/3; 也有效。
猜你喜欢
  • 2017-07-27
  • 1970-01-01
  • 1970-01-01
  • 2014-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多