2010-01-13 11 views

Respuesta

21

Aquí está uno siempre termino usando ya sea en una clase Java oa través de la FMT: Etiqueta jstl formatNumber:

DecimalFormat format = new DecimalFormat("$#,##0.00;$-#,##0.00"); 
String formatted = format.format(15.5); 

siempre produce al menos un $ 0,00 y es consistente cuando se muestre. También incluye miles de separadores donde sea necesario. Puede mover el signo menos delante del signo de dólar si ese es su requisito.

2

Probablemente sea mejor crear su propio DecimalFormat si desea un formato específico en lugar de confiar en el predeterminado.

Editar: Probablemente se podría también emitir el resultado de NumberFormat.getCurrencyInstance() para DecimalFormat y ajustarlo a sus preferencias.

+0

probablemente usted está bien, pero mi aplicación debe ser capaz de f moneda de ormat en locales de mayo. ¿No sería muy difícil implementar el formateo para todos esos entornos? –

30

Requiere un pequeño ajuste del DecimalFormat devuelto por NumberFormat.getCurrencyInstance() para hacerlo de forma independiente de la configuración regional. Esto es lo que hice (probado en Android):

DecimalFormat formatter = (DecimalFormat)NumberFormat.getCurrencyInstance(); 
String symbol = formatter.getCurrency().getSymbol(); 
formatter.setNegativePrefix(symbol+"-"); // or "-"+symbol if that's what you need 
formatter.setNegativeSuffix(""); 

IIRC, Currency.getSymbol() no puede devolver un valor para todos los locales para todos los sistemas, pero debería funcionar para los más grandes (y yo creo que tiene un retorno razonable sobre por sí solo, por lo que no debería tener que hacer nada)

1

Probar:

NumberFormat.getCurrencyInstance(Locale.CANADA);

0
NumberFormat.getCurrencyInstance(Locale.UK); 
Cuestiones relacionadas