2017-04-25 114 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:小心解释。 –