Java 计算结果不正确
我编写了以下代码Java 计算结果不正确,java,math,equation,Java,Math,Equation,我编写了以下代码 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
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 + ")");
}
}
}
插入“123456”时收到的结果为“-4.0,4.0”,
而它应该是“(-4.0,4.5)”。
我已经试着弄清楚为什么会发生这种情况,但我找不到任何原因。我发现我的计算公式是正确的
问题在哪里
double Equ1single = ((b1*a22)-(b2*a12))/((a11*a22)-(a12*a21));
/
是整数除法,因为所使用的两个/
操作数都是int
类型。整数除法产生一个整数值,即使它的结果后来被分配给了一个double
。将/
操作数强制转换为double
以获得double
除法。(与equale
声明相同。)
/
是整数除法,因为所使用的两个/
操作数都是int
类型。整数除法产生一个整数值,即使它的结果后来被分配给了一个double
。将/
操作数强制转换为double
以获得double
除法。(与eq2single
声明相同。)int/int
仍然是int
,整数没有小数部分。如果需要可以处理分数的类型,请使用double
(也用作操作数)。int/int
仍然是int
,整数没有分数部分。如果需要可以处理分数的类型,请使用double
(也作为操作数)。