Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:如何舍入到小数点而不保存到内存_Java_Math - Fatal编程技术网

Java:如何舍入到小数点而不保存到内存

Java:如何舍入到小数点而不保存到内存,java,math,Java,Math,嘿,伙计们,我有一个项目,我的编程类,使一个二次计算器,它工作得很好,但我所有的输出需要四舍五入到小数点后5位。我可以通过使用%.5f轻松地保存变量,但我的教授只希望我们在多次使用变量时将某些内容保存到变量中。正如您在我的代码中所看到的,很多解决方案(如x-intercepts等)只使用了一次,因此不允许保存它们。有没有办法强制数学字符串输出数字,例如3.00000?我已经搜索过了,但是如果不知道搜索的技术术语,很难找到答案 public static void main(String[] ar

嘿,伙计们,我有一个项目,我的编程类,使一个二次计算器,它工作得很好,但我所有的输出需要四舍五入到小数点后5位。我可以通过使用%.5f轻松地保存变量,但我的教授只希望我们在多次使用变量时将某些内容保存到变量中。正如您在我的代码中所看到的,很多解决方案(如x-intercepts等)只使用了一次,因此不允许保存它们。有没有办法强制数学字符串输出数字,例如3.00000?我已经搜索过了,但是如果不知道搜索的技术术语,很难找到答案

public static void main(String[] args) {
    PrintStream ps = new PrintStream(System.out);
    Scanner in = new Scanner(System.in);
    ps.print("Enter the coefficient of the quadratic term -> ");
    double coefficientQuad = in.nextInt();
    ps.print("Enter the coefficient of the linear term -> ");
    double coefficientLin = in.nextInt();
    ps.print("Enter the coefficient of the constant term -> ");
    double coefficientCon = in.nextInt();
    ps.println();
    ps.printf("For the quadratic equation %.5fx^2 + %.5fx + %.5f = 0\n", coefficientQuad, coefficientLin, coefficientCon);
    ps.println();
    double discriminant = Math.pow(coefficientLin, 2) - 4 * coefficientQuad * coefficientCon;
    ps.printf("Discriminant: %.5f\n", discriminant);
    ps.println("Roots: x = {" + (-coefficientLin + Math.sqrt(discriminant)) / 2 * coefficientQuad + "," + (-coefficientLin - Math.sqrt(discriminant)) / 2 * coefficientQuad + "}");
    double axisOfSymmetry = (-coefficientLin / 2 * coefficientQuad);
    ps.printf("Axis of Symmetry: x = %.5f\n", axisOfSymmetry);
    ps.printf("Vertex: (%.5f, " + (-Math.pow(coefficientLin, 2) / 4 * coefficientQuad + coefficientCon) + ")\n", axisOfSymmetry);
    ps.println("x-intercepts: (" + (-coefficientLin + Math.sqrt(discriminant) / 2 * coefficientQuad) + ", 0.00000) and (" + (-coefficientLin - Math.sqrt(discriminant) / 2 * coefficientQuad) + ", 0.00000)");
    ps.printf("y-intercept: (0.00000, %.5f)", coefficientCon);

如果您需要打印一个值并对其执行其他操作,那么至少要使用它两次。如果只需要打印它,则不需要通过变量间接将其传递到
PrintStream.printf()
;您可以直接使用产生值的任何表达式作为
printf()
参数。您使用字符串串联将值混合到格式字符串中。不要。将
printf(“顶点:(.5f,+(…)+)”\n,“对称轴”)更改为
printf(“顶点:(.5f,%.5f)%n”,对称轴,(…)
。与此相同:将
println(“x-截取:(“+(…)+”,0.00000)和(“+(…)+”,0.00000)”
更改为
printf(“x-截取:(.5f,0.00000)和(%.5f,0.00000)%n),(…),(…),(…)
。使用
printf()
时,格式字符串(第一个参数)很少是字符串文字以外的任何内容。为什么要使用
double-coefficientQuad=in.nextInt()
?虽然它在技术上可行,但很容易出错
Scanner
有一个
nextDouble()
方法,如果你像1.5一样输入它,它不会崩溃。坦白说,如果你的教授说你不能创建一个只会使用一次的变量,那么他就制定了一个愚蠢的规则。如果存在复杂的语句,它有可能使真实世界的代码不可读。我想说的是,即使这样也很难理解,因为一行中有多个复杂语句。如果您需要打印一个值并对其执行其他操作,那么至少要使用它两次。如果只需要打印它,则不需要通过变量间接将其传递到
PrintStream.printf()
;您可以直接使用产生值的任何表达式作为
printf()
参数。您使用字符串串联将值混合到格式字符串中。不要。将
printf(“顶点:(.5f,+(…)+)”\n,“对称轴”)更改为
printf(“顶点:(.5f,%.5f)%n”,对称轴,(…)
。与此相同:将
println(“x-截取:(“+(…)+”,0.00000)和(“+(…)+”,0.00000)”
更改为
printf(“x-截取:(.5f,0.00000)和(%.5f,0.00000)%n),(…),(…),(…)
。使用
printf()
时,格式字符串(第一个参数)很少是字符串文字以外的任何内容。为什么要使用
double-coefficientQuad=in.nextInt()
?虽然它在技术上可行,但很容易出错
Scanner
有一个
nextDouble()
方法,如果你像1.5一样输入它,它不会崩溃。坦白说,如果你的教授说你不能创建一个只会使用一次的变量,那么他就制定了一个愚蠢的规则。如果存在复杂的语句,它有可能使真实世界的代码不可读。我想说的是,即使这样也很难理解,因为在一行中有多个复杂的语句。