Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我应该使用什么格式来显示2位小数还是不显示?_Java_Decimal_Printf - Fatal编程技术网

Java 我应该使用什么格式来显示2位小数还是不显示?

Java 我应该使用什么格式来显示2位小数还是不显示?,java,decimal,printf,Java,Decimal,Printf,我正在尝试使用printf格式化一个数字,但找不到正确的掩码 例如: class F { public static void main( String ... args ) { p(2.123123); p(2.0); } public static void p(double d ) { System.out.printf("%.2f",d); System.out.println(); }

我正在尝试使用printf格式化一个数字,但找不到正确的掩码

例如:

class F { 
    public static void main( String ... args ) { 
        p(2.123123);
        p(2.0);
    }
    public static void p(double d ) { 
        System.out.printf("%.2f",d);
        System.out.println();
    }

}
将打印:

2.12
2.00
我应该用什么口罩来打印

2.12
2
或如有可能:

2.12
   2
?

背景:

我将使用它来显示文件大小。目前看起来是这样的:

23/03/11 12:15 0.00    TEST/
30/03/11 10:35 2.57 kb picture-3651.jpg
12/04/11 14:49 7.31 mb reference.pdf

不用说,当文件是一个目录且大小为0字节时,它看起来很糟糕

您可以尝试试用
%.3g
,它应该大致满足您的要求,但在掩码中包含
左侧的数字

如果这对您不起作用,您也可以搜索
.00
,然后使用
String.replace将其删除

经过一些实验后编辑:


String.format(“%.2f\n”,value.)。替换(“.00”,”)
应该执行您正在查找的操作。

使用
十进制格式执行以下操作:

DecimalFormat df = new DecimalFormat("#.##");

在我看来是一样的。。。测试文件夹大小为0.00:(因此,应该类似于:
printf(“%s%s%s,df.format(humanSize(file.length())、humanDesc(file.length())、file.getName())
?…我已经觉得自己很肮脏了,因为我不得不调用一个额外的函数,其大小和描述已经足够了,但我想没有其他选择了。@noob-你这么说是什么意思?@Bozho:你提供了一个很好的(并且很容易理解)解决方案。它不适用于2.9。格式化它不会显示“2.90”“那么,任何解决方案都适用于所有情况,提供两个小数或不提供小数?谢谢!