我有一笔金额
Long amount=83000;
我需要将其格式化为$83.000
,该怎么做?
NumberFormat formatter = NumberFormat.getCurrencyInstance(new Locale("en", "US"));
String moneyString = formatter.format(amount);
System.out.println(moneyString);
我得到了$83000.00
,但我希望我的观点在最后一位数字之前
答案 0 :(得分:3)
这可能会对你有帮助,
DecimalFormat myFormatter = new DecimalFormat("$###,###.###");
String output = myFormatter.format(amount);
System.out.println(output);
答案 1 :(得分:0)
您使用的是错误的课程。 NumberFormatter将为Locale指定特定格式。来自API文档:
您的代码可以完全独立于小数点,千位分隔符的区域设置约定,甚至是使用的特定小数位数,或者数字格式是否为十进制数。
如果您打算输出相同的字符串,无论操作系统的当前语言环境如何,您都应该查看DecimalFormat。
通过创建格式化字符串(例如"$#,##0"
)并传递DecimalFormatSymbols的实例,您将分组字符设置为'.'
,您将实现预期的输出而不会产生黑客攻击。
答案 2 :(得分:0)
这个怎么样?
long num = 83000;
DecimalFormat df = new DecimalFormat("##,###");
String toReplace = df.format(83000).toString();
System.out.println(toReplace.replace(",", "."));
答案 3 :(得分:-1)
这应该有效:
DecimalFormatSymbols symbols = new DecimalFormatSymbols(new Locale("en", "US"));
symbols.setDecimalSeparator(',');
symbols.setGroupingSeparator('.');
DecimalFormat df = new DecimalFormat("$#,##0", symbols);
System.out.println(df.format(83000L));
//$83.000
答案 4 :(得分:-2)
也许你是这个意思?
public static void main(String[] args) {
Long amount = 67890L;
NumberFormat formatter = NumberFormat.getCurrencyInstance(new Locale("en", "US"));
String moneyString = formatter.format((double) amount / 1000);
System.out.println(moneyString);
}
此代码将打印:
$ 67.89
答案 5 :(得分:-2)
使用BigDecimal
格式代替Long
:
BigDecimal bd = BigDecimal.valueOf(amount, 3);
NumberFormat formatter = NumberFormat.getCurrencyInstance(new Locale("en","US"));
formatter.setMinimumFractionDigits(3);
String moneyString = formatter.format(bd);
System.out.println(moneyString);