2008-10-19 15 views

Respuesta

17
decimal one = 1000M; 
    decimal two = 12.5M; 

    Console.WriteLine(one.ToString("0.##")); 
    Console.WriteLine(two.ToString("0.##")); 
+1

Su importante recordar Tienes que incluir tantos signos # como se desea mostrar cifras decimales si se utiliza este método. – AlexCuse

20

Actualización del siguiente comentario de user1676558

Prueba esto:

decimal one = 1000M;  
decimal two = 12.5M;  
decimal three = 12.567M;  
Console.WriteLine(one.ToString("G"));  
Console.WriteLine(two.ToString("G")); 
Console.WriteLine(three.ToString("G")); 

Para un valor decimal, la precisión predeterminada para la "G" especificador de formato es de 29 dígitos, y la notación de punto fijo siempre se utiliza cuando se omite la precisión, por lo que este es el mismo que "0. #### ######################### ".

A diferencia de "0. ##" se mostrará todos los decimales significativos (un valor decimal no puede tener más de 29 cifras decimales).

El "G29" especificador de formato es similar, pero se puede utilizar la notación científica si más compacta (ver Standard numeric format strings).

Por lo tanto:

decimal d = 0.0000000000000000000012M; 
Console.WriteLine(d.ToString("G")); // Uses fixed-point notation 
Console.WriteLine(d.ToString("G29"); // Uses scientific notation 
+1

G29 utiliza la notación científica en ciertos escenarios (consulte el [documentación de MSDN] (https://msdn.microsoft.com/en-us/library/dwhawy9k (v = vs.110) .aspx # Anchor_5)), 0. ############################# es como un G29 que no revierte a la notación científica. – user1676558

+0

@ user1676558 - buena captura, actualizaré la respuesta. – Joe

+0

Claro, y siento ser una plaga. G conserva los ceros a la izquierda, a diferencia de G29 y 0. #############################. G muestra el decimal "tal como está", por así decirlo. G29 elimina los ceros finales, pero también puede volver a la notación científica si es más compacto. 0. ############################# no revierte a la notación científica, pero elimina los ceros finales. El 0.000010m decimal puede demostrar estas diferencias. – user1676558

Cuestiones relacionadas