如何使用变量INT打印双

时间:2019-02-27 13:05:46

标签: java casting formatting int double

我正在做学校作业,但被卡住了。我将变量设置为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] + " ");
    }
}

4 个答案:

答案 0 :(得分:2)

  

是否可以在点后打印3个数字?我尝试了printf和(double),但没有用。

int强制转换为double不足以得到预期的输出。

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

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

这是 live working demo

注意:

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

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:-1)

我认为您应该再次重新定义此变量,这不会造成灾难性的后果,请小心。 Eclipse / NetBean将通知您变量是否已完全更改。

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