我正在做学校作业,但被卡住了。我将变量设置为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] + " ");
}
}
答案 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)
我猜测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);
答案 3 :(得分:-1)
我认为您应该再次重新定义此变量,这不会造成灾难性的后果,请小心。 Eclipse / NetBean将通知您变量是否已完全更改。
我不确定,但是我认为您可以在Eclipse的某个地方找到一个用于更改变量及其所有引用的按钮。