Actualmente estamos utilizando la siguiente para la creación de valores en dólares de Estados Unidos en nuestra aplicación web:Cómo utilizar NumberFormatInfo para eliminar paréntesis para valores negativos
string.Format("{0:C0}", dollarValue);
En este ejemplo, si dollarValue es 145, entonces vamos a ver: $ 145. Si es -145, entonces veremos ($ 145) en lugar de - $ 145. Tenga en cuenta que para nosotros, dollarValue es un doble, pero podría ser cualquier tipo de número. Creo.
De todos modos, lo que quiero es que sea $ 145 o - $ 145.
Ahora, según mi investigación, podría ser posible hacerlo con la clase NumberFormatInfo. No puedo entender cómo usarlo, y no puedo encontrar ningún ejemplo válido. Vi esta pregunta aquí: C# creating a custom NumberFormatInfo to display "Free" when a currency value is $0.00 pero el ejemplo de MSDN vinculado a esta pregunta parece un poco diferente de lo que realmente quiero hacer.
me doy cuenta, que tendrá que hacer algo de lo siguiente:
double dollarValue = -145d;
string myMoney = dollarValue.ToString("C0", someIFormatProvider);
donde es probable que el tipo de NumberFormatInfo someIFormatProvider. Ahora, lo que he hecho es esto:
NumberFormatInfo ni = new NumberformatInfo();
ni.CurrencyNegativePattern = 1; // The value 1 should mean not to use parenthesis
string myMoney = dollarValue.ToString("C0", ni);
... y obtengo una excepción de "La instancia es de solo lectura". Mientras que la "documentación" de la propiedad CurrencyNegativePattern dice que puede CONFIGURAR y OBTENER el valor, aparentemente, no puede. Además, NumberFormatInfo es una clase sellada. No puedo crear fácilmente una nueva clase basada en ella y anular el valor.
No entiendo cómo lidiar con esto. En este momento, mi solución es simplemente negar mi valor negativo y tener un resultado positivo que hago el string.Format(...)
nuevamente. Sí, me doy cuenta de que no hay ningún signo negativo al frente de esto, pero, por supuesto, eso se resuelve fácilmente agregando un "-" al frente del resultado según sea necesario.
¿Alguien podría darme un ejemplo práctico de cómo usar correctamente la clase NumbefFormatInfo en esta situación? Gracias.
¿Seguro el error proviene de configurar el CurrencyNegativePattern de una instancia NumberFormatInfo? He visto esta excepción de Solo lectura, pero se plantea al intentar modificar las propiedades de CurrentUICulture. – Tisho
El código funciona para mí (después de corregir el caso en 'NumberformatInfo') –