如何解决计算错误?

| 我正在尝试编写一个程序,该程序从用户读取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。如何获得正确的结果到小数点后两位?     
已邀请:
        将分子和分母转换为浮点数,然后再除法。
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 );

}
    
        以下更改将满足您的需求。
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个小数位。     
        为什么不使用数据类型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));
   }

}
    
        由于将整数除以并将结果存储回整数,因此得到0.0000。要查看小数部分,可以将result声明为float变量。 在这种情况下,要打印2个小数,可以使用printf格式。 在C语言中,它将类似于%.2f。 基于这些错误,我认为您将从阅读有关数据类型(尤其是浮点数)的内容中受益。     
        如果将商方法的返回类型从int更改为float,它将不再将答案舍入为最接近的整数。
public static float quotient(int numerator, int denominator)
{
   return (float) numerator / (float) denominator;
}
    

要回复问题请先登录注册