2008-10-19 12 views

Odpowiedz

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

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

jego ważne jest, aby pamiętać, masz Musi zawierać jak najwięcej # objawy jak chcesz zobaczyć miejsca po przecinku w przypadku korzystania z tej metody. – AlexCuse

20

Zaktualizowano następujące komentarzem user1676558

Spróbuj tego:

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")); 

Dla wartości dziesiętnej, domyślna precyzja dla specyfikatora formatu "G" to 29 cyfr, a notacja o stałym punkcie jest zawsze używana, gdy precyzja jest pominięta, więc jest taka sama jak "0. #### ######################### ".

W przeciwieństwie do "0. ##" wyświetli wszystkie ważne miejsca dziesiętne (dziesiętna wartość nie może zawierać więcej niż 29 miejsc po przecinku).

Specyfikator formatu "G29" jest podobny, ale może używać notacji naukowej, jeśli jest bardziej zwarty (patrz Standard numeric format strings).

Zatem:

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

G29 wykorzystuje notację naukową w niektórych scenariuszach (patrz [dokumentacja MSDN] (https://msdn.microsoft.com/en-us/library/dwhawy9k (v = vs.110) .aspx # Anchor_5)), 0. ############################# jest jak G29, który nie powraca do zapisu naukowego. – user1676558

+0

@ user1676558 - dobry połów, zaktualizuję odpowiedź. – Joe

+0

Pewnie, i przepraszam, że jestem szkodnikiem. G faktycznie zachowuje końcowe zera w przeciwieństwie do G29 i 0. #############################. G pokazuje dziesiętny "tak jak jest", że tak powiem. G29 usuwa końcowe zera, ale może również powrócić do notacji naukowej, jeśli jest bardziej zwarty. 0. ############################# nie powraca do notacji naukowej, ale usuwa zera końcowe. Dziesiętny 0,000010 m może wykazać te różnice. – user1676558

Powiązane problemy