我正在尝试使用Java将数字转换为两位小数。以下是我尝试过的,它可以在几个输入上正常工作 -
double number = 20.3794;
DecimalFormat df = new DecimalFormat("#.00");
String formattedNumber = df.format(number);
System.out.println(formattedNumber); //output 20.38
以下是我的情景 -
20
,输出结果为20.00
。在这种情况下,我最后不需要.00
,它应该只打印为20
。 0.019
,它会打印出.02
,因此我需要0
.
前面的0.02
才能打印出{{1}}。 这可能吗?
答案 0 :(得分:2)
您似乎已经交换了#
和0
:0
用于当您要强制为零时,#
用于当数字是可选的时。
模式"0.##"
完全符合您的要求。
答案 1 :(得分:2)
您可以尝试string format
而不是某些逻辑
<强>样品:强>
double s = 20;
double s2 = 0.019;
String result1 = String.format("%.2f", s);
String result2 = String.format("%.2f", s2);
System.out.println((result1.contains(".00")) ? (int)s : result1);
System.out.println((result2.contains(".00")) ? (int)s : result2);
<强>结果:强>
20
0.02
答案 2 :(得分:2)
"#"
更改为"0"
"0"
更改为"#"
,这样只有在这些位置有0以外的数字时才会打印它们。 基本上问题是您的"#"
和"0"
已被撤消。将模式更改为"0.##"
而不是"#.00"
。 #
表示如果数字不为0,则只显示一个数字(零显示为不存在)。 0
表示该地方总会有一个数字,如果需要,它将为0。看看the docs。
以下是一些例子:
double number1 = 20.3794, number2 = 20, number3 = 0.018, number4 = 20.1;
DecimalFormat df = new DecimalFormat("0.##");
System.out.println(df.format(number1)); // 20.38
System.out.println(df.format(number2)); // 20
System.out.println(df.format(number3)); // 0.02
System.out.println(df.format(number4)); // 20.1
答案 3 :(得分:0)
对于第一种情况:检查if (number % 1 == 0)
以查看您的双人是否为整体。如果是,您可以将其转换为整数。
对于第二种情况:尝试将new DecimalFormat("#.00");
替换为new DecimalFormat("0.00");
答案 4 :(得分:0)
的System.out.println(的String.format(&#34;%2F&#34;,20.3794));将打印20.38