Pregunta

Mi aplicación está mostrando números negativos como -1. Los usuarios han cambiado los requisitos (¡solo para un cambio!) Y ahora tendremos que mostrar los números como (1). ¿Puedo habilitar eso para toda la aplicación, por ejemplo, cambiar el web.config o incluso el CultureInfo de la aplicación? ¿Hay algún efecto secundario de hacerlo ya que tenemos muchas páginas que contienen validadores de números?

¡Gracias!

¿Fue útil?

Solución

Para la moneda es muy fácil:

String.Format("{0:C}", value)

Esto usará la información de cultura para el sistema.

Para los números normales vinculados a datos, use muestra de Mark Glorie .

Artículo de MSDN

Otros consejos

Yo usaría el formato de cadena. Hacer un cambio en la configuración de la aplicación para satisfacer un requisito de UI es una tarea dura. SteveX escribió una excelente publicación de blog sobre el formato de String. También es compatible con el marcado (aspx) en lugar de solo relevante en el código.

Desde su publicación:

String.Format(”{0:$#,##0.00;($#,##0.00);Zero}”, value);

    This will output “$1,240.00″ if passed 1243.50. It will output the 
    same format but in parentheses if the number is negative, and will
    output the string “Zero” if the number is zero.

Lo que no es exactamente lo que quieres, pero está cerca.

Comprueba esto .. http://msdn.microsoft.com/en-us/library/91fwbcsb.aspx

Convierte la representación de cadena de un número en un estilo específico en su equivalente decimal.

Siempre puedes escribir tu propio método ToString () personalizado como método de extensión, pero como mencionas, usar CultureInfo probablemente sea mejor. Echa un vistazo aquí:

http://msdn.microsoft.com /en-us/library/system.globalization.numberformatinfo.numbernegativepattern.aspx

Tengo la siguiente página marcada para hacer el formato de cadena: http: //idunno.org/archive/2004/14/01/122.aspx

A mitad de camino, da la respuesta:

String.Format("{0:£#,##0.00;(£#,##0.00);Nothing}", value);

Para responder a tu otra pregunta, no modificaría el archivo app.config para hacerlo global, por las razones dadas en las otras respuestas.

String.Format(”{0:f;(f);0”, -1);

Esto funciona.

DataFormatString="{0:c0}"
  • Cantidades negativas entre paréntesis
  • Mil separador - coma
  • $ símbolo en frente

¿Estás mostrando tus datos en Gridview / Datagrids? Si es así, el formato se puede aplicar por columna de límite, algo como:

<asp:BoundField DataFormatString="{##;(##)}"/>

Esto solo funciona con enteros sin embargo ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top