tipo - Moneda de formato C#MVC.Net sin decimales
tipo de dato money en c# (3)
No creo que exista una forma de hacerlo que utilice explícitamente el formato de moneda, pero puede usar el formato personalizado con el carácter #
: http://msdn.microsoft.com/en-us/library/0c899ak8.aspx
Esto debería funcionar para la moneda estadounidense:
[DisplayFormat(DataFormatString = "{0:$#.##}")]
El carácter #
solo representa un dígito si es necesario.
Estoy buscando un DataFormatString que muestre un flotador como moneda. Pero omita los valores decimales si son irrelevantes (0).
Por el momento estoy usando:
[DisplayFormat(DataFormatString = "{0:C}")]
En mis modelos. Esto se muestra como una moneda correctamente. No he podido encontrar en ninguna parte los detalles sobre los cambios que debo hacer para omitir los lugares decimales.
var price = 100.0M;
var curr = price % 1 == 0 ? price.ToString("C0") : price.ToString("C");
Puede poner esto en un método de extensión y llamarlo donde lo necesite.
[DisplayFormat(DataFormatString = "{0:C0}")]
Esto debería darte 0 decimales. Pero rondas automáticas! entonces si tienes, 56 redondeará hasta 1
20000,00 => 20000 €
20000,56 => 20001 €
20000,49 => 20000 €
/ edit: he tomado prestada una idea desde aquí: c # Decimal a cadena para moneda
Si puede convertir su valor flotante a decimal, puede usar este método de extensión para omitir el 0. Trunca el decimal y si este valor truncado es igual al valor original, corta los ceros. Si no, muestra 2 dígitos. Sé que esto no es una cadena de formato de datos, pero no estoy seguro, se puede hacer de una manera tan simple como una anotación.
public static string ToCurrencyString(this decimal d)
{
return d.Equals(Decimal.Truncate(d)) ? d.ToString("0 €") : d.ToString("0.00 €");
}