2017-10-04 31 views
1

我想刪除十進制值的最後零爲這個搜索了很多,但所有的答案在網絡和堆棧溢出刪除全零。我的目標是在最後顯示一些零。如何刪除十進制的最後一個零

Sample 
50.00000000 
50.01000000 
50.01010000 
50.01011000 
50.01010100 

expected 
    50.00 
    50.01 
    50.0101 
    50.01011 
    50.010101 

我不知道如何在c#中做到這一點。

我被嘗試了很多東西,如.ToString("G29");和其他的答案,但它的所有給我像

50.00 
50.01 
50.01 
50.01 
50.01 

請幫助..

+4

你試過了'0.00 ## #######'格式? – Alex

+1

@Ivar 50.00 if no decimal fraction then then be .00 in last –

+7

looking at the first desired result:0.00 ######### –

回答

4

試試這個:

decimal num = 50.00m; 
decimal num2 = 50.01010100m; 
Console.WriteLine(num.ToString("0.00#########")); 
Console.WriteLine(num2.ToString("0.00#########")); 

輸出:

50.00 
50.010101 

(如在意見提出由 「亞歷克斯」 和 「艾爾諾德Weerd」)

3

你可以使用TrimEnd刪除最後一個零是這樣的:

decimal num = 50.01011000m; 

if (num % 1 == 0) 
{ 
    return num.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture); 
}  
string str = num.ToString().TrimEnd('0'); 

Console.WriteLine(str); 

輸出:

50,01011

你也可以打包成一個擴展方法:

public static class Extensions 
{ 
    public static string ToTrimmendString(this decimal num) 
    { 
     if (num % 1 == 0) 
     { 
      return num.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture); 
     } 
     return num.ToString().TrimEnd('0'); 
    } 
} 

,並調用它像這樣:

Console.WriteLine(num.ToTrimmendString()); 
0

喲ü可以嘗試這樣的事情

public decimal removeTrailingZeros(decimal val) 
{ 
    return val % 1 == 0 ? Math.Round(val, 2) : val/1.0000000000000000000000000000000000m; 
} 

測試輸入

50.00000000米, 50.01000000米, 50.01010000米, 50.01011000米, 50.01010100米,

輸出

50.00 50.01 50.0101 50.01011 50.010101

+0

爲什麼會這樣工作? –

+0

因爲是如何劃分十進制數字作品 – styx

+1

50!= 50.00根據需要 – Magnus