如何使用变量INT打印DOUBLE

问题描述 投票:-1回答:4

我正在做我的学校作业而且我被卡住了。我将我的变量设置为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] + " ");
    }
}
java casting formatting int double
4个回答
2
投票

通过将计算作为int,您基本上是“丢弃”信息。这意味着从那时起,就无法将其取回。

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

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


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,以避免出现异常。


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);

-1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.