如果是一个数字,如何将数字转换为两位小数?

时间:2014-07-29 03:56:55

标签: java decimal decimalformat

我正在尝试使用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}}。

这可能吗?

5 个答案:

答案 0 :(得分:2)

您似乎已经交换了#00用于当您要强制为零时,#用于当数字是可选的时。

模式"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)

  • 要在小于1的数字前面取0,请将"#"更改为"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