2010-07-27 13 views
5

Muchos idiomas, como .NET languages y Java vienen con una función de formato de moneda incorporada. Lo que hacen es formatear un número usando un formato de número específico de cultura y agregar el símbolo de moneda de la cultura.¿Son realmente útiles las funciones de formato de moneda?

El problema aquí es que el formato de número está fuertemente acoplado con el símbolo de moneda. En la práctica, el formato de número debe ser el correcto para el idioma del texto circundante, mientras que el símbolo de moneda debe ser para la moneda de la que se habla. Por ejemplo, no usaría miles de separadores estadounidenses cuando habla de dólares estadounidenses en un documento que está en alemán.

¿Se puede pensar en un uso práctico para este tipo de funciones de formato de moneda, o por el contrario existen sólo para impresionar a la gente de gestión orientada al dinero?

+0

¿El símbolo de la unidad monetaria está siempre vinculado al símbolo del separador, o son separables? La función 'money_format' de PHP permite un control bastante estricto sobre la cadena formateada, incluida la capacidad de suprimir el símbolo de moneda. –

+0

¿No es útil para una aplicación global utilizada por usuarios en diferentes países que desean que el dinero se muestre en su formato local? O me estoy perdiendo el punto? –

+0

@no: .NET parece permitirle cambiar el símbolo de moneda (aunque toma algunas líneas de código, que está a un paso de la cadena de formato limpio. En algunos contextos, solo está permitido especificar una cadena de formato) . No pude encontrar una forma de hacerlo en Java, pero no soy exactamente un experto en Java, así que no puedo decirlo con certeza. –

Respuesta

1

Por lo menos en el formato de número .NET está ligado a una cultura, no el símbolo. El símbolo de moneda predeterminado es el principal asociado con esa cultura. El símbolo puede ser anulado según sea necesario.

Al igual que su ejemplo, si estoy incorporación de un valor de la moneda en una cadena Luego uso la cultura de la cuerda para el formato, pero anulan el símbolo de moneda de manera apropiada. El resto del formato se deja como está.

Por otro lado si estoy haciendo un informe todos los valores tienen el formato utilizando la misma cultura. En este caso, normalmente utilizo los códigos de 3 caracteres ISO en lugar de símbolos de moneda, especialmente si hay más de 2 monedas involucradas, para evitar problemas de fuente.

Ryan's answer to another question describe el qué y cómo las mejores prácticas para el formato de moneda en C#.

+0

Cambiar el símbolo de moneda es un buen punto, aunque requiere una gran cantidad de código para algo que en mi humilde opinión debería ser parte de los parámetros de formato. También es fácil tener problemas con los símbolos de moneda que se muestran en el tamaño incorrecto ($ 50 frente a 50 kr), sin mencionar que algunas monedas realmente cambian de orden dependiendo de la localidad (€ 50 frente a 50 €) –

+1

Terminé escribiendo un método de extensión en 'decimal' para manejar todo el trabajo de borrajas, algo similar al ejemplo de Jon Skeet aquí: http://stackoverflow.com/questions/1071273/currency-formatting/1071302#1071302 – devstuff

Cuestiones relacionadas