更改格式的双倍像***。***,**

时间:2013-12-18 08:35:04

标签: android double

我有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本机函数可以有一些简单而好的方法。任何人都可以帮助找到功能或更好的方法吗?

3 个答案:

答案 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)

有关详细信息,请查看:Link1Link2Link3

答案 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)