簡體   English   中英

在Java中,如何將數字格式化為字符串,使其格式為“ xxx.xxx.xxx,yy”?

[英]How to format numbers as strings to be in the form “xxx.xxx.xxx,yy”in Java?

Java中是否有一個類,可讓您將“ 102203345.32”之類的數字格式設置為此“ 102.203.345,32”並返回字符串類型?

我想獲得一個字符串,其中千位之間用“。”分隔。 小數點之間用逗號“,”分隔。

有人可以幫我嗎? 我找到了DecimalFormat類,並嘗試對其進行自定義:

public class CustomDecimalFormat {
static public String customFormat(String pattern, double value ) {
      DecimalFormat myFormatter = new DecimalFormat(pattern);
      String output = myFormatter.format(value);
      return output;
}
}

但是當我這樣調用customFormat方法時:CustomDecimalFormat.customFormat(“ ###。###,00”)我得到一個異常...

我該怎么辦?

謝謝!

確保閱讀並理解Javadoc的“ 特殊模式字符”部分,尤其是以下注意事項:

此處列出的字符用於非本地化模式。 本地化模式使用從此格式化程序的DecimalFormatSymbols對象獲取的相應字符代替,這些字符會失去其特殊狀態。

如果這樣做了,應該清楚您必須使用適當的構造函數並提供適當配置的分隔符/分組字符,而在模式本身中,點和逗號具有特殊含義。

實際上,上述所有復雜性都為您提供方便:它允許您自定義數字格式並將其本地化。

這是一個對我有用的代碼示例:

final DecimalFormatSymbols syms = new DecimalFormatSymbols();
syms.setDecimalSeparator(',');
syms.setGroupingSeparator('.');
DecimalFormat myFormatter = new DecimalFormat("###,###.00", syms);
System.out.println(myFormatter.format(1234.12));

您還可以在應用本地化模式地方使用變體,以獲得更直觀的代碼:

final DecimalFormatSymbols syms = new DecimalFormatSymbols();
syms.setDecimalSeparator(',');
syms.setGroupingSeparator('.');
DecimalFormat myFormatter = new DecimalFormat("", syms);
myFormatter.applyLocalizedPattern("###.###,00");
System.out.println(myFormatter.format(1234.12));

您可以嘗試GERMAN數字格式

NumberFormat.getNumberInstance(Locale.GERMAN).format(102203345.32)

首先,您放錯了逗號和小數點。 您的格式應為:###,###。00而不是###。###,00 ...

還要檢查您的區域設置,它對格式有影響。 請參閱下面的鏈接。

http://docs.oracle.com/javase/tutorial/i18n/format/decimalFormat.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM