【发布时间】:2011-03-05 18:44:57
【问题描述】:
在 Java 中,如何有效地将 1234.56 和类似 BigDecimals 之类的浮点数转换为 $1,234.56 之类的字符串
我正在寻找以下内容:
字符串12345.67变成字符串$12,345.67
我也希望通过 Float 和 BigDecimal 来实现这一点。
【问题讨论】:
在 Java 中,如何有效地将 1234.56 和类似 BigDecimals 之类的浮点数转换为 $1,234.56 之类的字符串
我正在寻找以下内容:
字符串12345.67变成字符串$12,345.67
我也希望通过 Float 和 BigDecimal 来实现这一点。
【问题讨论】:
有一个对地区敏感的习语效果很好:
import java.text.NumberFormat;
// Get a currency formatter for the current locale.
NumberFormat fmt = NumberFormat.getCurrencyInstance();
System.out.println(fmt.format(120.00));
如果您当前的语言环境在美国,println 将打印 $120.00
另一个例子:
import java.text.NumberFormat;
import java.util.Locale;
Locale locale = new Locale("en", "UK");
NumberFormat fmt = NumberFormat.getCurrencyInstance(locale);
System.out.println(fmt.format(120.00));
这将打印:£120.00
【讨论】:
DecimalFormat moneyFormat = new DecimalFormat("$0.00");
System.out.println(moneyFormat.format(1234.56));
【讨论】:
这里是根据你输入输出的代码::
BigDecimal 和数字的程序输出为 $12,345.67,它也适用于浮点数。
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
public class test {
public static void main(String[] args) {
DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setGroupingSeparator(',');
String pattern = "$#,##0.###";
DecimalFormat decimalFormat = new DecimalFormat(pattern, symbols);
BigDecimal bigDecimal = new BigDecimal("12345.67");
String bigDecimalConvertedValue = decimalFormat.format(bigDecimal);
String convertedValue = decimalFormat.format(12345.67);
System.out.println(bigDecimalConvertedValue);
System.out.println(convertedValue);
}
}
【讨论】: