• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

NumberFormat does not show right currency symbol

 
Jehan Jaleel
Ranch Hand
Posts: 196
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Pie
Posts: 47300
52
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 196
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 6109
6
Android IntelliJ IDE Java
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Pie
Posts: 4846
34
Chrome Netbeans IDE Windows
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 196
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks Stephan, I guess that solves it. Although I was kinda hoping that Java would support all currencies.
 
Pat Farrell
Rancher
Posts: 4660
5
Linux Mac OS X VI Editor
  • 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic