Pregunta

Estoy tratando de utilizar String.Format ( "{0: c}", somevalue) en C #, pero estoy teniendo un tiempo difícil encontrar la manera de configurar la salida para satisfacer mis necesidades. Aquí están mis necesidades:

  1. 0 a salidas en blanco
  2. 1,00 salidas $ 1.00 USD
  3. 10.00 salidas a $ 10.00
  4. 100.00 salidas a $ 100.00
  5. 1000.00 salidas a $ 1.000,00
String.Format

He tratado ( "{0: c}", somevalue) pero para los valores cero se da salida a $ 0.00 que no es lo que quiero. También he intentado String.Format ( "{0: $ 0,0.00; $ (0,0.00); #}", somevalue), pero para 1.0 que da salida a $ 01.00. String.Format ( "{0: $ 0.00; $ (0.00); #}", somevalue) funciona para la mayoría de los casos, pero cuando es somevalue 1000.00 la salida es de $ 1000.00.

¿Hay algún formato que se ajuste a los 5 casos por encima? Toda la documentación que he leído únicamente el texto de los conceptos básicos y no toca en este tipo de escenario.

¿Fue útil?

Solución

Si utiliza

string.Format("{0:$#,##0.00;($#,##0.00);''}", value)

Usted recibirá "" para el valor cero y los otros valores deben ser formateado correctamente también.

Otros consejos

Trate algo como esto:

String currency = (number == 0) ? String.Empty : number.ToString("c");

En función de si está utilizando siempre el mismo tipo de datos para todos los valores de las monedas, se podría escribir un método de extensión que lo haría para que su caso se cumple siempre. Por ejemplo, si se utiliza el tipo decimales:

public static string ToCurrencyString (this decimal value)
{
  if (value == 0)
    return String.Empty;
  return value.ToString ("C");
}

Esto es una gran de referencia que le puede resultar útil, que resume estos datos: http: //blog.stevex .net / cadena de formato-in-CSharp /

Los formatos de moneda "C" son grandes hasta que necesite un espacio en blanco para 0. Aquí hay dos maneras, uno se mencionó anteriormente, similares a las que yo uso que le dan el espacio en blanco para 0:

// one way
string.Format("{0:$#,##0.00;($#,##0.00);''}", somevalue)

// another way
somevalue.ToString("$#,##0.00;($#,##0.00);''")

La segunda técnica se siente más "fluida", si te gusta ese estilo de código (como yo).

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