如何在java中将输出小数格式化为小数点后两位?

How do I format the output decimal to two places after the decimal in java?

我希望我的 fallingTime 数字限制在小数点后两位。我使用了“String.format(%.2f)”,但它给我一条错误消息。

这是错误信息:

Exception in thread "main" java.util.IllegalFormatConversionException: f != java.lang.String
        at java.base/java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4426)
        at java.base/java.util.Formatter$FormatSpecifier.printFloat(Formatter.java:2951)
        at java.base/java.util.Formatter$FormatSpecifier.print(Formatter.java:2898)
        at java.base/java.util.Formatter.format(Formatter.java:2673)
        at java.base/java.util.Formatter.format(Formatter.java:2609)
        at java.base/java.lang.String.format(String.java:3302)
        at fallingDistance.main(fallingDistance.java:22)
public class fallingDistance {


    public static double fallDistance(int fallingTime){

        double distance;
        double g = 9.8;
        distance = (0.5*g*Math.pow(fallingTime, fallingTime));
        return distance;
    

    }

    //public static void displayHeader(){
        //System.out.println("Time\t\t\t\t\tDistance\n----\t\t\t\t\t--------");
    //}
    public static void main(String[] args){
        
        //displayHeader();
        
        for(int time = 1; time <= 10; time++){
            System.out.println(time+ " seconds\t\t" + String.format("%.2f", fallDistance(time) + " meters"));

        }
    }
}

+替换为,

System.out.println(time + " seconds\t\t" + String.format("%.2f", fallDistance(time), " meters"));

您放错了括号。以下应该有效。

for (int time = 1; time <= 10; time++) {
    System.out.println(time + " seconds\t\t" + String.format("%.2f", fallDistance(time)) + " meters");

}

我从代码末尾删除了“meters”并将其放在“%.2f”之后并且成功了。代码现在看起来像这样:

{System.out.println(时间 + " seconds\t\t" + String.format("%.2f 米", fallDistance(time)));}