我有double amount
。设数 500000.12 。我想将金额的值设置为TextView
,格式为 500,000.12 (其中12为美分,500,000为美元)。
我写了这个函数,它可以正常工作
private String getAmountAsString(double amount) {
double integralPart = amount % 1;
int fractionalPart = (int) (amount - integralPart);
int integral = (int) integralPart * 100;
String strFractional = String.format("%,d", fractionalPart);
String strAmount = (strFractional + "." + String.valueOf(integral));
return strAmount;
}
但我认为使用java本机函数可以有一些简单而好的方法。任何人都可以帮助找到功能或更好的方法吗?
答案 0 :(得分:3)
可以使用各种区域设置来格式化float, double
等。您可以使用:
String.format(Locale.<Your Locale>, "%1$,.2f", myDouble);
此处.2f
表示小数点后您想要的位数。如果您没有指定任何语言环境,它将使用默认语言环境。
在String类中,此方法重载为:
format(String format, Object... args)
&
format(Locale l, String format, Object... args)
答案 1 :(得分:2)
因此使用了NumberFormat
。它们很适合处理不同国家的当地不同。
//define a local, gets automated if a point or comma is correct in this Country.
NumberFormat anotherFormat = NumberFormat.getNumberInstance(Locale.US);
DecimalFormat anotherDFormat = (DecimalFormat) anotherFormat;
anotherDFormat.applyPattern("#.00");//set the number of digits afer the point
anotherDFormat.setGroupingUsed(true);// set grouping
anotherDFormat.setGroupingSize(3);//and size of grouping
double myDouble = 123456.78;
String numberWithSeparators = anotherDFormat.format(myDouble);//convert it
答案 2 :(得分:1)