File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Java in General and the fly likes NumberFormat does not show right currency symbol Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Soft Skills this week in the Jobs Discussion forum!
JavaRanch » Java Forums » Java » Java in General
Bookmark "NumberFormat does not show right currency symbol" Watch "NumberFormat does not show right currency symbol" New topic
Author

NumberFormat does not show right currency symbol

Jehan Jaleel
Ranch Hand

Joined: Apr 30, 2002
Posts: 196
Hi all,

I want to format a double and display it as a foreign currency. I am using NumberFormat to do this...



Right now this is printing "¤ 1,200.00" in my file, but the symbol for Phillipine Peso is ₱.

Any suggestions? And happy pie day!

Thanks,
Jahan
Campbell Ritchie
Sheriff

Joined: Oct 13, 2005
Posts: 40027
    
  28
Are you using a Windows® command line? That has a restricted repertoire of characters it can display at all. Try it on something like a JOptionPane (showMessageDialog()) and see whether that makes any difference.
By they way, why are you using doubles and not BigDecimal for money?
Jehan Jaleel
Ranch Hand

Joined: Apr 30, 2002
Posts: 196
I am running this program within a Tomcat server on Windows. It is writing to a plain text file. Since I am writing to a text file, JOptionPane is not really feasible. Any other suggestions?

And as for the money, I can switch to BigDecimal as you suggested.

Thanks.
Jeff Verdegan
Bartender

Joined: Jan 03, 2004
Posts: 6109
    
    6

Jehan Jaleel wrote:I am running this program within a Tomcat server on Windows. It is writing to a plain text file. Since I am writing to a text file, JOptionPane is not really feasible.


Yes it is. You can read from that text file and display in a JOptionPane.

Or you could open that text file with an application and a font that you know can display the character correctly.

You're claiming it's producing the wrong character. Campbell is saying that it may be producing the right character, but that the tool that you're using to view it is interpreting the character incorrectly, or is not capable of displaying the character properly. This could be because the application does not support the encoding or character set, or because the font simply doesn't have a glyph for that character.

Your first step it to determine what character is actually being produced by Java, and viewing that character in a cmd.exe window or in Notepad is not a reliable way to do that.
Stephan van Hulst
Bartender

Joined: Sep 20, 2010
Posts: 3649
    
  17

The problem is that NumberFormat does not support Filipino. '¤' is a default currency symbol for unknown locales.

For a list of supported Locales, see Locale.getAvailableLocales().

A solution is to print the currency symbol directly.
Jehan Jaleel
Ranch Hand

Joined: Apr 30, 2002
Posts: 196
Thanks Stephan, I guess that solves it. Although I was kinda hoping that Java would support all currencies.
Pat Farrell
Rancher

Joined: Aug 11, 2007
Posts: 4659
    
    5

Jehan Jaleel wrote:I want to format a double and display it as a foreign currency. I am using NumberFormat to do this...


I can't help you with the formatting problem, but *never* use double for currency. It will not work when you try to use arithmetic on it.
Use BigInteger, or make a Currency class and store the values as an integer number of pennies, pence, etc.

Double just doesn't work for money.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: NumberFormat does not show right currency symbol