对于重力程序,java 中无法将小数点四舍五入到小数点后 4 位

Can't round decimals to 4 decimal points in java for gravity program

所以,我试图在 table 我创建的重力程序中获取小数位数,该程序在 4 位小数后四舍五入。但是,每当我尝试对其进行四舍五入时,它要么打印 table 而不进行四舍五入,要么开始打印 table,然后向我抛出错误。 我确定我做错了什么,我试图在网上寻求帮助,但没有帮助。 我在下面注释了几行,以显示我尝试四舍五入到小数点后 4 位但没有奏效的地方。 我将 post 我的代码放在下面,看看你们是否可以帮我弄清楚我做错了什么。

public class Gravity 
{
    public static void main(String[] args) 
    {
        Gravity g = new Gravity();
        System.out.printf("%5s%20s%20s\n", "Time", "Distance Earth", "Distance Moon");
        // Gravity.format()
    
        // DecimalFormat df = new DecimalFormat("###.####");
        // System.out.println(df.format(g));
      
       for (int i = 1; i <= 10; i++) 
       {
           System.out.printf("%5d%20fm%20fm\n", + i,g.distanceFallen(i, 9.8), g.distanceFallen(i, 1.625));
           // System.out.format("%.4f", i);  
       }
   }

 /* private static Gravity format(String string, int i) 
    {
        // 
        return i;
    }*/

    public double distanceFallen (double time, double gAcc)
    {
        // System.out.format("%.4f");
        // System.out.format("%.4f", time);
        return (0.5)*gAcc*Math.pow(time, 4);
    }
}

编辑:此外,这里是 table 的样子,只是为了消除任何潜在的混淆。

Time      Distance Earth       Distance Moon
   1            4.900000m            0.812500m
   2           78.400000m           13.000000m
   3          396.900000m           65.812500m
   4         1254.400000m          208.000000m
   5         3062.500000m          507.812500m
   6         6350.400000m         1053.000000m
   7        11764.900000m         1950.812500m
   8        20070.400000m         3328.000000m
   9        32148.900000m         5330.812500m
  10        49000.000000m         8125.000000m

将您的格式更改为:

"%5d%20.4fm%20.4fm\n"

您也需要将 header 格式从 20 改为 24。