gpt4 book ai didi

java - 负符号数有问题

转载 作者:行者123 更新时间:2023-11-30 11:15:02 24 4
gpt4 key购买 nike

我正在用 Java 做一个简单的测试,(我是初学者)我试图制作一个程序来计算二阶方程的判别式并显示结果,但是当我改变 nom1 的符号时和 nom2,该程序不显示任何结果,我已经进行了一些测试,我确定问题就在那里,但我不知道如何解决。欢迎任何帮助。

这是我的代码:

public class test {
public static void main(String[] args) {

double a = 2;
double b = 5;
double c = 3;

double delta = b*b - 4 * a * c;

double den = 2 * a;

if(delta == 0){
double nom = b;
double pgcd = pgcd(nom, den);
double x0nom = nom/pgcd;
double x0den = den/pgcd;
System.out.println("x0 = "+String.valueOf(x0nom)+" / "+String.valueOf(x0den));
}else if(delta > 0){
// x1:
double nom1 = -b + Math.sqrt(delta);
double pgcd1 = pgcd(nom1, den);
int x1nom = (int) (nom1 / pgcd1);
int x1den = (int) (den / pgcd1);
// x2:
double nom2 = -b - Math.sqrt(delta);
double pgcd2 = pgcd(nom2, den);
int x2nom = (int) (nom2 / pgcd2);
int x2den = (int) (den / pgcd2);


System.out.println("pgcd = "+String.valueOf(pgcd1)+" "+String.valueOf(pgcd2));

System.out.println("x1 = "+String.valueOf(x1nom)+" / "+String.valueOf(x1den));
System.out.println("x2 = "+String.valueOf(x2nom)+" / "+String.valueOf(x2den));
}else if(delta < 0){
}
}


public static double pgcd(double a, double b) {
while (a != b) {
if (a < b){
b = b - a;
}else{
a = a - b;
}
}
return a;
}
}

最佳答案

使用BigInteger's gcd method

public static double pgcd(double a, double b) {

return (BigInteger.valueOf((long) a).gcd(BigInteger.valueOf((long) b)).intValue());
}

关于java - 负符号数有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25629478/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com