2012-04-26 9 views
7

que necesito para dar formato a una moneda negativa de la siguiente manera: $(10.00)

me trató de usar string.Format("{0:C}", itemprice) pero eso me da este resultado ($10.00) (el $ dentro del paréntesis

también probé

string fmt = "##;(##)"; 
itemprice.ToString(fmt); 

pero me da lo mismo que antes ($10.00)

Cualquier idea sobre cómo obtener un resultado como este: $(10.00).

+5

¿Por qué necesitas el símbolo de moneda fuera del paréntesis ? Yo diría que la moneda negativa _debería estar entre paréntesis, símbolo y todo. – Oded

+0

+1 Oded, estoy totalmente de acuerdo, el formato/comportamiento correcto sería signo dentro del paréntesis. – code4life

+2

Bueno, sí lo sé. pero las solicitudes son solicitudes. no se puede discutir con el cliente :) – Youssef

Respuesta

5
itemPrice.ToString(@"$#,##0.00;$\(#,##0.00\)"); 

Debería funcionar. Acabo de probarlo en PowerShell:

PS C:\Users\Jcl> $teststring = "{0:$#,##0.00;$\(#,##0.00\)}" 
PS C:\Users\Jcl> $teststring -f 2 
$2,00 
PS C:\Users\Jcl> $teststring -f -2 
$(2,00) 

¿Eso es lo que quieres?

+0

@jck ¿cómo se ejecuta esta prueba sin C#? csc.exe .... ¿qué es PS? ¿Puedo usarlo para probar expresiones C#? ¿Me puede dar un enlace de descarga? –

+0

@Royi: PS es Powershell. Para Windows XP, pruebe [este enlace] (http://support.microsoft.com/kb/968929), Vista y 7 ya tienen incorporado Powershell si recuerdo correctamente '(Todos los programas -> Accesorios -> Windows Powershell)' I creer. – Jcl

+0

, pero ¿puede ejecutar comandos C# en cmd así como así? –

2

Tendría que dividir manualmente esto, ya que es un formato no estándar.

string.Format("{0}{1:n2}", System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol, itemprice); 
3

solución de Uso JCL y lo convierten en un buen extensión:

public static string ToMoney(this object o) 
{ 
    return o.toString("$#,##0.00;$\(#,##0.00\)"); 
} 

A continuación, sólo llamarlo:

string x = itemPrice.ToMoney(); 

U otra aplicación muy simple:

public static string ToMoney(this object o) 
{ 
    // note: this is obviously only good for USD 
    return string.Forma("{0:C}", o).Replace("($","$("); 
} 
+0

El segundo fragmento no respeta otras monedas, es decir, códigos de dólar estadounidenses firman. – abatishchev

+1

Puede usar 'System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol' para los parámetros' Replace' – Jcl

Cuestiones relacionadas