计算结果不正确
Incorrect calculation result
我写了下面的代码
import java.util.Scanner;
public class Equations
{
public static void main (String [] args)
{
Scanner scan = new Scanner (System.in);
System.out.println ("This program solves a system of 2 linear equations" +"\n"+
"Enter the coefficients a11 a12 a21 a22 b1 b2:");
int a11 = scan.nextInt();
int a12 = scan.nextInt();
int a21 = scan.nextInt();
int a22 = scan.nextInt();
int b1 = scan.nextInt();
int b2 = scan.nextInt();
System.out.println ("Eq: " + a11 + "*x1" + "+" + a12 + "*x2 = " + b1);
System.out.println ("Eq: " + a21 + "*x1" + "+" + a22 + "*x2 = " + b2);
if(((a11*a22)-(a12*a21))!=0){
double Equ1single = ((b1*a22)-(b2*a12))/((a11*a22)-(a12*a21));
double Equ2single = (((b2*a11)-(b1*a21)))/(((a11*a22)-(a12*a21)));
System.out.println ("Single solution: (" + Equ1single + "," + Equ2single + ")");
}
}
}
插入“1 2 3 4 5 6”得到的结果是“(-4.0,4.0)”,
虽然它应该是“(-4.0,4.5)”。
一段时间以来,我一直试图弄清楚为什么会发生这种情况,但我找不到任何原因。我发现我的计算公式正确。
问题出在哪里?
double Equ1single = ((b1*a22)-(b2*a12))/((a11*a22)-(a12*a21));
/
是整数除法,因为使用的两个 /
操作数都是 int
类型。一个整数除法产生一个整数值,即使它的结果后来被分配给一个 double
。将 /
操作数转换为 double
以获得 double
除法。 (与 Equ2single
声明相同。)
我写了下面的代码
import java.util.Scanner;
public class Equations
{
public static void main (String [] args)
{
Scanner scan = new Scanner (System.in);
System.out.println ("This program solves a system of 2 linear equations" +"\n"+
"Enter the coefficients a11 a12 a21 a22 b1 b2:");
int a11 = scan.nextInt();
int a12 = scan.nextInt();
int a21 = scan.nextInt();
int a22 = scan.nextInt();
int b1 = scan.nextInt();
int b2 = scan.nextInt();
System.out.println ("Eq: " + a11 + "*x1" + "+" + a12 + "*x2 = " + b1);
System.out.println ("Eq: " + a21 + "*x1" + "+" + a22 + "*x2 = " + b2);
if(((a11*a22)-(a12*a21))!=0){
double Equ1single = ((b1*a22)-(b2*a12))/((a11*a22)-(a12*a21));
double Equ2single = (((b2*a11)-(b1*a21)))/(((a11*a22)-(a12*a21)));
System.out.println ("Single solution: (" + Equ1single + "," + Equ2single + ")");
}
}
}
插入“1 2 3 4 5 6”得到的结果是“(-4.0,4.0)”, 虽然它应该是“(-4.0,4.5)”。 一段时间以来,我一直试图弄清楚为什么会发生这种情况,但我找不到任何原因。我发现我的计算公式正确。
问题出在哪里?
double Equ1single = ((b1*a22)-(b2*a12))/((a11*a22)-(a12*a21));
/
是整数除法,因为使用的两个 /
操作数都是 int
类型。一个整数除法产生一个整数值,即使它的结果后来被分配给一个 double
。将 /
操作数转换为 double
以获得 double
除法。 (与 Equ2single
声明相同。)