我正在做我的学校作业而且我被卡住了。我将我的变量设置为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,您基本上是“丢弃”信息。这意味着从那时起,就无法将其取回。
由于您当前的代码看起来像intVariable = intVariable / intVariable; print((double)intVariable)
,编译器会自动使用整数除法,基本上丢弃所有小数
你希望你的代码看起来像doubleVariable = intVariable / doubleVariable;print(doubleVariable)
,这意味着将分区中的分隔符转换为double,并更改sol
的类型,以便它可以保存doubles
而不是现在的类型。
有没有办法在点后打印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
,以避免出现异常。
我猜sol
是int
的二维数组,因此 - 正如@B001在他的评论中提到的 - 它在小数点后没有数字。如果您只想打印除法的结果:adj[i][j] / det
作为double
,我建议使用另一个变量来打印结果,即
double result = (double) adj[i][j] / det;
sol[i][j] = (int) result;
System.out.printf("%.3f", result);
我想你应该再次重新定义这个变量,这不会是灾难性的,只要小心。如果您的变量已完全更改,Eclipse / NetBean将通知您。
我不确定,但我认为在Eclipse的某个地方,您可以找到一个更改变量及其所有引用的按钮。