Hayk Nahapetyan
Hayk Nahapetyan

Reputation: 4550

change format of double like ***.***,**

I have double amount. Let amount to be 500000.12. I want to set value of the amount to TextView like this format 500,000.12 (where 12 is cents , 500,000 is dollars).

I wrote this function and it works

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;
    }

But I think that there can be some easy and good way of doing this with java native functions. Can anybody help to find functions or some better way?

Upvotes: 1

Views: 197

Answers (3)

Dinesh Prajapati
Dinesh Prajapati

Reputation: 9520

I think you have to take a look at this one

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

Upvotes: 1

Shailesh Saxena
Shailesh Saxena

Reputation: 3512

various Locale can be used to format float, double etc. You can use:

String.format(Locale.<Your Locale>, "%1$,.2f", myDouble);

Here .2f represents how many digits you want after decimal. If you are not specifying any locale it will use the default locale.

In String class this method is overloaded as:

format(String format, Object... args)  
&
format(Locale l, String format, Object... args)

For more info have a look: Link1 , Link2 and Link3

Upvotes: 3

Simulant
Simulant

Reputation: 20122

Therefore NumberFormats are used. They are good to handle local differents for different countries.

//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

Upvotes: 2

Related Questions