【问题标题】:How to print a DOUBLE with a variable INT如何使用变量 INT 打印 DOUBLE
【发布时间】:2019-02-27 13:05:46
【问题描述】:

我正在做我的学校作业,但我卡住了。我将变量设置为 INT,现在我无法更改它,因为我将它用于其他计算。有没有办法可以在点后打印 3 个数字?我尝试使用printf(double),但没有成功。

这是我的一段代码:

for (int i = 0; i < 2; i++) // Printing Inverse
{
    System.out.print("[");
    output.print("[");
    for (int j = 0; j < 2; j++) {
        sol[i][j] = adj[i][j] / det;
        System.out.printf((double) sol[i][j] + " ");
        output.print((double)sol[i][j] + " ");
    }
}

【问题讨论】:

  • int 是整数! int 在点后没有数字
  • 请把问题和整个代码放在一起
  • @B001ᛦ - 这是确保我们拥有所有必要细节的最简单方法。比如我们需要查看soladjdet的类型。
  • @B001ᛦ 由 StephenC 回答
  • 如果你想将 int 的小数部分打印到 3dp,你可以这样做System.out.println(myInt + ".000") ;)

标签: java casting formatting int double


【解决方案1】:

通过以 int 形式进行计算,您基本上是在“丢弃”信息。这意味着,从那时起,就不可能再取回它了。

由于您当前的代码看起来像intVariable = intVariable / intVariable; print((double)intVariable),编译器会自动使用整数除法,基本上会丢弃所有小数

您希望您的代码看起来像doubleVariable = intVariable / doubleVariable;print(doubleVariable),这意味着将除法中的分隔符转换为双精度,并更改sol 的类型,以便它可以保存doubles,而不是您现在拥有的类型。

【讨论】:

    【解决方案2】:

    有没有办法可以在点后打印 3 个数字?我尝试使用 printf 和 (double) 但它不起作用。

    int 转换为double 不足以获得预期的输出。

    要打印带有三位小数的double,您需要在printf 方法中使用%3f 作为第一个参数,如下所示:

    System.out.printf("%.3f", (double) sol[i][j]);
    

    这是一个live working demo

    注意:

    请注意,sol[i][j] = adj[i][j] / det; 中的除法结果将是 double,因此您需要将变量声明为 double 而不是 int 以避免出现异常。

    【讨论】:

    • %.3f 将打印三位小数。我在您的答案代码中看不到句点 - 在“%”和“3”之间
    • @Abra 这只是一个错字,如果你看到演示,它就在那里。 :)
    【解决方案3】:

    我猜solint 的二维数组,因此——正如@B001 在他的评论中提到的——它的小数点后没有数字。如果您只想打印除法的结果:adj[i][j] / det 作为double,我建议使用另一个变量来打印结果,即

    double result = (double) adj[i][j] / det;
    sol[i][j] = (int) result;
    System.out.printf("%.3f", result);
    

    【讨论】:

      【解决方案4】:

      我认为你应该重新定义这个变量,这不会是灾难性的,只是要小心。 Eclipse/NetBean 将通知您变量是否已完全更改。

      我不确定,但我认为在 Eclipse 的某个地方,您可以找到一个按钮来更改您的变量及其所有引用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-23
        • 2014-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多