2012-09-06 9 views
7

Necesito todos los valores redondeados a dos decimales. Así que 1.401 debería redondear a 1.40, pero Math.Round(value, 2) redondea a 1.4.Math.Round no conserva el cero final

¿Cómo puedo forzar el cero final?

Respuesta

17

1.4 es lo mismo que 1.40 - lo que desea es mostrar de manera diferente. Utilice una cadena de formato al llamar ToString - como value.ToString("0.00")

+0

Correcto. Solo quiero mostrarlo de manera diferente. ¡Gracias! – Blade3

12

1.4 == 1.40 la única vez que necesitaría un 0 final es cuando se muestra el número ... es decir. formatearlo en una cadena.

.ToString("N2"); 
5

El cero final es más de un formato que una cuestión de valor, a fin de utilizar

foo.ToString("0.00") 
2

El cero final es sólo una presentación. Matemáticamente, 1.40 y 1.4 son equivalentes.

utilizar el formato en lugar de presentarlo con los lugares decimales 2:

String.Format("{0:0.00}", 1.4); 

or 

yourNumber.ToString("0.00"); 
1

es un número, por lo que no tiene un cero al final - hay que hacerle el texto y la fuerza (el doble?) un cero detrás.

2

Sé que esta es una pregunta antigua, pero podría ayudar a alguien.

Estoy usando una clase C# xml para poblar y luego serializar a xml. Uno de los valores es un doble. Si asigno un '7' al valor, esto se serializa a '7' cuando realmente necesito '7.00'. La manera más fácil alrededor de esto era justo hacer

foo = doubleValue + 0.00M 

Y eso hace que el valor 7,00 en lugar de sólo 7. pensó que esto era mejor que haciendo un ToString y luego analizar de nuevo.

0

Tiene que ver con si usa un decimal o un doble.

Si bien internamente (como se desprende de la Source Code) Math.Round() conserva los ceros de la izquierda, incluso en un doble, siendo el hecho de que se guarda como un doble en la memoria provoca automáticamente para eliminar todos los ceros a la derecha

Así que si si desea poner ceros a la cola, puede usar las funciones de visualización de cadenas para formatearlo como otros han respondido, o asegúrese de pasar el valor original como un decimal (causando el uso interno Decimal.Math.Round, que tratará solo con decimales), y asegúrese no lanzar el resultado a un doble y tampoco guardarlo en una variable doble.

Del mismo modo, si tiene un decimal y no quiere ceros al final, simplemente empújelo a un doble (puede enviar la entrada a Math.Round o el resultado, no importa mientras en algún punto del camino se está convirtiendo en un doble).

Cuestiones relacionadas