2011-12-01 62 views
19

He visto en Internet formatear un valor doble NEGATIVO con un paréntesis CON un símbolo $, es decir. tipo de cambio monetario.

Busco a una cadena de formato .NET, para dar formato a

12345.67 = 12,345.67 

-12345.67 = (12,345.67) 
+2

VB.NET o C#? Título y etiquetas no están de acuerdo. – Oded

Respuesta

3

Puede utilizar la función FormatNumber:

FormatNumber(-100, UseParensForNegativeNumbers:=TriState.True)

volverá "(100)"

Hay más en MSDN

+0

Esto se encuentra en el espacio de nombres Microsoft.VisualBasic, por lo que para usarlo en C# primero debe agregar una referencia a Microsoft.VisualBasic. –

+0

¡Gracias Jon! ¡Aprecia tu respuesta rápida! – user715993

+0

Otra razón (como si necesitara más) por qué VB gobierna :-) Se las arregló para agregar una línea de código y una casilla de verificación para ejecutar informes ya sea con un signo menos o entre paréntesis – gchq

46

¡MSDN en conditional formatting al rescate!

Puede especificar hasta tres secciones diferentes de su cadena de formato a la vez, separándolas con punto y coma. Si especifica dos secciones de cadena de formato, la primera se usa para valores positivos y cero, mientras que la segunda se usa para valores negativos; si usa tres secciones, la primera se usa para valores positivos, la segunda para valores negativos y la tercera para valores cero.

La salida de este código C#:

 string fmt1 = "#,##0.00"; 
     string fmt2 = "#,##0.00;(#,##0.00)"; 
     double posAmount = 12345.67; 
     double negAmount = -12345.67; 
     Console.WriteLine("posAmount.ToString(fmt1) returns " + posAmount.ToString(fmt1)); 
     Console.WriteLine("negAmount.ToString(fmt1) returns " + negAmount.ToString(fmt1)); 
     Console.WriteLine("posAmount.ToString(fmt2) returns " + posAmount.ToString(fmt2)); 
     Console.WriteLine("negAmount.ToString(fmt2) returns " + negAmount.ToString(fmt2)); 

es:

posAmount.ToString(fmt1) returns 12,345.67 
negAmount.ToString(fmt1) returns -12,345.67 
posAmount.ToString(fmt2) returns 12,345.67 
negAmount.ToString(fmt2) returns (12,345.67) 
Cuestiones relacionadas