2017-04-25 110 views
0

c#中有這個數學函數嗎?如何刪除c中的小數點後的零點#

如果值是18.00的話,我希望值18, 如果值是18.50的話,我想值18.5, 如果值爲18.25000然後我想值18.25。

+0

你說的是十進制轉換爲字符串? –

+0

我認爲這是你正在尋找的答案: http://stackoverflow.com/questions/4525854/remove-trailing-zeros –

+0

不,我不想在字符串中轉換。我想要十進制值,但小數點後沒有0。 –

回答

-1

如果你只想轉換成十進制使用該

static decimal? RemoveTrailingZeros(this decimal? value) 
{ 
    if (value == null) return null; 

    var format = $"0.{string.Join(string.Empty, Enumerable.Repeat("#", 29))}"; 
    var strvalue = value.Value.ToString(format); 
    return ConvertToDecimalCultureInvariant(strvalue); 
} 

static decimal? ConvertToDecimalCultureInvariant(this string value) 
{ 
    decimal decValue; 

    if (!decimal.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out decValue)) 
    { 
     return null; 
    } 
    return decValue; 
} 

由於小數的精度是29,因此Enumerable.Repeat("#", 29)

並以此

var result = RemoveTrailingZeros(29.0000m); 

enter image description here

+0

@downvoter:小心解釋。 –