java逻辑错误-10位小数未显示

wsewodh2  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(424)

这个问题在这里已经有答案了

整数除法:为什么1/3的结果==0((16个答案)
24天前关门。
我的程序允许用户计算两个数字,然后根据用户输入的运算符执行简单的计算。所以我的源代码是:

  1. System.out.print("Enter First Number: ");
  2. int num1 = scanNum.nextInt();
  3. System.out.print("Enter Second Number: ");
  4. int num2 = scanNum.nextInt();
  5. System.out.print("Enter Operator (+, -, * or /): ");
  6. char opt = scanOpt.next().charAt(0);
  7. scanNum.close();
  8. scanOpt.close();
  9. switch (opt)
  10. {
  11. case '+':
  12. float result = num1 + num2;
  13. System.out.println(num1 + " " + opt + " " + num2 + " = " +result);
  14. break;
  15. case '-':
  16. result = num1 - num2;
  17. System.out.println(num1 + " " + opt + " " + num2 + " = " +result);
  18. break;
  19. case '*':
  20. result = num1 * num2;
  21. System.out.println(num1 + " " + opt + " " + num2 + " = " +result);
  22. break;
  23. case '/':
  24. result = num1 / num2;
  25. System.out.println(num1 + " " + opt + " " + num2 + " = " +result);
  26. break;
  27. default:
  28. System.out.println("Invalid Operator!");
  29. break;

它工作得很好,但是每当它将两个数字相除时,比如“6.0/4.0”,第十个小数点就不会出现。正确的输出应该是:

  1. Enter First Number: 6
  2. Enter Second Number: 4
  3. Enter Operator (+, -, * or /): /
  4. 6 / 4 = 1.5

但使用我自己的源代码,结果是:

  1. Enter First Number: 6
  2. Enter Second Number: 4
  3. Enter Operator (+, -, * or /): /
  4. 6 / 4 = 1.0
von4xj4u

von4xj4u1#

  1. double result;
  2. switch (opt)
  3. {
  4. case '+':
  5. result = (double) num1 + num2;
  6. System.out.println(num1 + " " + opt + " " + num2 + " = " +result);
  7. break;
  8. case '-':
  9. result = (double)num1 - num2;
  10. System.out.println(num1 + " " + opt + " " + num2 + " = " +result);
  11. break;
  12. case '*':
  13. result = (double) num1 * num2;
  14. System.out.println(num1 + " " + opt + " " + num2 + " = " +result);
  15. break;
  16. case '/':
  17. result = (double) num1 / num2;
  18. System.out.println(num1 + " " + opt + " " + num2 + " = " +result);
  19. break;
  20. default:
  21. System.out.println("Invalid Operator!");
  22. break;
  23. }
展开查看全部
34gzjxbg

34gzjxbg2#

这是因为java将两个整数相除,从而得到一个整数输出。尝试将输入声明为float或alternativeley

  1. 1.0 * num1 / num2

这会将num1“转换”为浮点值。

相关问题