¿Cómo formateo a Double
a a String
en C # para tener solo dos decimales?
Si uso String.Format("{0:0.00}%", myDoubleValue)
el número, entonces se redondea y quiero un simple truncado sin ningún redondeo. También quiero que la conversión String
sea sensible a la cultura.
Respuestas:
Yo uso lo siguiente:
Por ejemplo:
Si el número es 50.947563 y usa lo siguiente, sucederá lo siguiente:
Y ahí está su respuesta truncada, ahora para formatear la cadena simplemente haga lo siguiente:
fuente
string.Format
paso que formatea la cadena. Vea mi respuesta a continuación.Lo siguiente redondea los números, pero solo muestra hasta 2 decimales (eliminando los ceros finales), gracias a
.##
.http://dobrzanski.net/2009/05/14/c-decimaltostring-and-how-to-get-rid-of-trailing-zeros/
fuente
Te sugiero que primero trunques y luego formatee:
Use la constante 100 para 2 dígitos truncados; use un 1 seguido de tantos ceros como dígitos después del punto decimal que desea. Use el nombre de la cultura que necesita para ajustar el resultado del formato.
fuente
new CultureInfo("de-DE")
, debería usar la propiedad estáticaCulture.InvariantCulture
Método más simple, use cadenas de formato numérico:
fuente
Yo uso
price.ToString("0.00")
para obtener los primeros 0sfuente
La función c #, expresada por Kyle Rozendo:
fuente
¿Qué tal agregar un decimal adicional que se redondeará y luego se descartará?
fuente
Esto es trabajo para mí
fuente
Sé que este es un hilo viejo pero solo tuve que hacer esto. Mientras que los otros enfoques aquí funcionan, quería una manera fácil de poder afectar muchas llamadas
string.format
. Entonces agregar elMath.Truncate
a todas las llamadas no fue realmente una buena opción. Además, como parte del formato se almacena en una base de datos, lo hizo aún peor.Por lo tanto, hice un proveedor de formato personalizado que me permitiría agregar truncamiento a la cadena de formato, por ejemplo:
La implementación es bastante simple y se puede extender fácilmente a otros requisitos.
fuente
Tuve ese problema con Xamarin Forms y lo resolví con esto:
fuente
Para lo que vale, para mostrar la moneda, puede usar
"C"
:Salida:
$1.99
fuente
También podría escribir su propio IFormatProvider , aunque supongo que eventualmente tendría que pensar en una forma de hacer el truncamiento real.
Al menos sería fácilmente reutilizable.
Hay un artículo sobre cómo implementar su propio IFormatProvider / ICustomFormatter aquí en CodeProject . En este caso, "extender" un formato numérico existente podría ser la mejor opción. No parece demasiado difícil.
fuente
Los siguientes se pueden usar para mostrar solo los que usan la propiedad de String.
fuente
Solución:
fuente
También tenga en cuenta la información cultural de su sistema. Aquí mi solución sin redondear.
En este ejemplo, solo tiene que definir la variable MyValue como doble. Como resultado, obtiene su valor formateado en la variable de cadena NewValue .
Nota: también establezca C # usando la instrucción:
fuente