我有一些由集合返回的字段
2.4200
2.0044
2.0000
我想要这样的结果
2.42
2.0044
2
我试过用String。格式,但它返回2.0000,并将其设置为N0也会四舍五入其他值。
我有一些由集合返回的字段
2.4200
2.0044
2.0000
我想要这样的结果
2.42
2.0044
2
我试过用String。格式,但它返回2.0000,并将其设置为N0也会四舍五入其他值。
当前回答
其他答案:
在WPF应用程序中使用XAML你可以使用
{Binding yourDecimal, StringFormat='#,0.00#######################'}
上面的答案将在某些情况下保留0,因此您仍然可以返回2.00
{Binding yourDecimal, StringFormat='#,0.#########################'}
如果要删除所有后面的零,请相应地进行调整。
其他回答
这个怎么样:
public static string TrimEnd(this decimal d)
{
string str = d.ToString();
if (str.IndexOf(".") > 0)
{
str = System.Text.RegularExpressions.Regex.Replace(str.Trim(), "0+?$", " ");
str = System.Text.RegularExpressions.Regex.Replace(str.Trim(), "[.]$", " ");
}
return str;
}
在我看来,使用自定义数字格式字符串更安全。
decimal d = 0.00000000000010000000000m;
string custom = d.ToString("0.#########################");
// gives: 0,0000000000001
string general = d.ToString("G29");
// gives: 1E-13
这很简单。
decimal decNumber = Convert.ToDecimal(value);
return decNumber.ToString("0.####");
测试。
欢呼:)
我使用这个代码来避免“G29”科学符号:
public static string DecimalToString(this decimal dec)
{
string strdec = dec.ToString(CultureInfo.InvariantCulture);
return strdec.Contains(".") ? strdec.TrimEnd('0').TrimEnd('.') : strdec;
}
编辑:使用系统CultureInfo.NumberFormat.NumberDecimalSeparator:
public static string DecimalToString(this decimal dec)
{
string sep = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator;
string strdec = dec.ToString(CultureInfo.CurrentCulture);
return strdec.Contains(sep) ? strdec.TrimEnd('0').TrimEnd(sep.ToCharArray()) : strdec;
}
你可以设置为:
decimal decNumber = 23.45600000m;
Console.WriteLine(decNumber.ToString("0.##"));