NumberFormat问题

时间:2010-11-15 06:58:51

标签: java

http://www.exampledepot.com/egs/java.text/FormatNum.html

我的号码为1.23,我希望将其格式化为1,23。但如果我只有1,那么我不希望将它格式化为1,00。

使用##,## 0.00我格式化1.23到1,23和1到1,00。我如何格式化1.23到1,23和1到1。

6 个答案:

答案 0 :(得分:2)

NumberFormat format = NumberFormat.getNumberInstance();
format.setMaximumFractionDigits(2);
format.setMinimumFractionDigits(0);

System.out.println(format.format(1.23));
System.out.println(format.format(1.0));

答案 1 :(得分:1)

似乎您可以使用本地解决问题,使用Frech作为本地的十进制格式。然后你会得到','而不是'。'

NumberFormat f = NumberFormat.getInstance(local);
if (f instanceof DecimalFormat) {
    ((DecimalFormat) f).setDecimalSeparatorAlwaysShown(true);
}

或如下所示,你可以做到

DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setDecimalSeparator(',');
DecimalFormat format = new DecimalFormat("###.00",symbols);
System.out.println(format.format(1.22));

答案 2 :(得分:1)

也许这有帮助。

public class Main {

    public static void main(String[] args) {

        double f1 = 1;
        System.out.printf("f1: %.2f%n", f1);  // prints f1: 1.00

        double f2 = 1.23;
        System.out.printf("f2: %.2f%n", f2);  // prints f2: 1.23

    }
}

答案 3 :(得分:1)

请尝试使用此模式:##,###.##

DecimalFormat df = new DecimalFormat("##,###.##");
System.out.println(df.format(1.00));
System.out.println(df.format(1.23));

打印:

1
1.23

模式中的0显示零为“0”,而#显示零不存在。

答案 4 :(得分:1)

试试这个:

改写了asela和grodriguez的答案

DecimalFormatSymbols symbols = new DecimalFormatSymbols(); symbols.setDecimalSeparator( ''); DecimalFormat format = new DecimalFormat(“###。##”,symbol); 的System.out.println(format.format(1.00)); 的System.out.println(format.format(1.23));

输出:

1

1.23

干杯!

-Saligh

答案 5 :(得分:1)

如果您的区域设置,国家/地区设置使用十进制逗号作为小数点分隔符,那么它已经由java处理,就像瑞典语区域设置一样:

double number = 1.23;       
double otherNumber = 1.00;

System.out.println(NumberFormat.getInstance(new Locale("sv")).format(number));
System.out.println(NumberFormat.getInstance(Locale.ENGLISH).format(number));

System.out.println(NumberFormat.getInstance(new Locale("sv")).format(otherNumber));
System.out.println(NumberFormat.getInstance(Locale.ENGLISH).format(otherNumber));

打印

1,23
1.23
1
1个