如何解决计算错误?

时间:2011-06-10 02:34:49

标签: java computation

我正在尝试编写一个程序,从用户那里读取2个数字并将它们分开。这是我到目前为止的代码:

import java.util.Scanner;

public class divideByZero {

public static int quotient(int numerator, int denominator)
{
   return numerator / denominator;
}

public static void main(String args[])
{
   Scanner scanner = new Scanner(System.in);

    System.out.print("Please enter the first number: ");

    int numerator = scanner.nextInt();

    System.out.print("Please enter the second number: ");

    int denominator = scanner.nextInt();

    int result = quotient( numerator, denominator );

    float result2 = (float)result;

    System.out.printf("\n The first number %d divided by the second number "
            + "%d = %f\n", numerator, denominator, result2 );

}

我遇到了计算问题。例如,当我输入3除以4时,我得到结果0.000000。如何将正确的结果输出到2位小数?

5 个答案:

答案 0 :(得分:1)

在分割之前将分子和分母投射为浮点数。

import java.util.Scanner;

public class divideByZero {

public static float quotient(float numerator, float denominator)
{
   return numerator / denominator;
}

public static void main(String args[])
{
   Scanner scanner = new Scanner(System.in);

    System.out.print("Please enter the first number: ");

    int numerator = scanner.nextInt();

    System.out.print("Please enter the second number: ");

    int denominator = scanner.nextInt();

    float result = quotient( (float) numerator, (float) denominator );

    System.out.printf("\n The first number %d divided by the second number "
            + "%d = %f\n", numerator, denominator, result );

}

答案 1 :(得分:1)

为什么不使用数据类型double而不是float?

以下是一些格式化为两个小数点的代码:

import java.text.*;

public class DecimalPlaces {

   public static void main(String[] args) {

       double d = 1.234567;
       DecimalFormat df = new DecimalFormat("#.##");
       System.out.print(df.format(d));
   }

}

答案 2 :(得分:1)

以下更改将满足您的需求。

public static float quotient(int numerator, int denominator)
{
    return (float)numerator / (float)denominator;
}

float result = quotient( numerator, denominator );

System.out.printf("\n The first number %d divided by the second number "
        + "%d = %.2f\n", numerator, denominator, result2 );

你不能对int进行除法并得到一个小数int(没有这样的东西),所以除法必须用浮点数完成并存储到浮点数中。 %.2f将其限制为2位小数。

答案 3 :(得分:0)

你得到0.0000,因为你正在划分整数并将结果存回一个整数。要查看小数部分,可以将结果声明为浮点变量。

当它正常工作时,要打印2位小数,您可以使用printf格式化。

在C中它就像%.2f。

根据错误,我认为您可以从阅读数据类型中受益,尤其是浮点数。

答案 4 :(得分:0)

如果将商方法的返回类型从int更改为float,则它将不再将答案舍入为最接近的整数。

public static float quotient(int numerator, int denominator)
{
   return (float) numerator / (float) denominator;
}