我有一些由集合返回的字段
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也会四舍五入其他值。
当前回答
我从http://dobrzanski.net/2009/05/14/c-decimaltostring-and-how-to-get-rid-of-trailing-zeros/上找到了一个优雅的解决方案
基本上
decimal v=2.4200M;
v.ToString("#.######"); // Will return 2.42. The number of # is how many decimal digits you support.
其他回答
像这样试试
string s = "2.4200";
s = s.TrimStart("0").TrimEnd("0", ".");
然后把它转换成浮点数
下面的代码可以用来不使用字符串类型:
int decimalResult = 789.500
while (decimalResult>0 && decimalResult % 10 == 0)
{
decimalResult = decimalResult / 10;
}
return decimalResult;
返回789.5
非常简单的答案是使用TrimEnd()。这是结果,
double value = 1.00;
string output = value.ToString().TrimEnd('0');
输出为1 如果我的值是1.01,那么输出将是1.01
取决于你的数字代表什么,以及你想如何管理这些值:它是一种货币,你需要舍入还是截断,你只需要这个舍入来显示吗?
如果用于显示,则考虑格式化数字为x.ToString("")
http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx和
http://msdn.microsoft.com/en-us/library/0c899ak8.aspx
如果只是四舍五入,请使用Math。需要midpointround重载的圆重载
http://msdn.microsoft.com/en-us/library/ms131274.aspx)
如果你从数据库中获取值,考虑转换而不是转换: double value = (decimal)myRecord["columnName"];
下面的代码将能够删除后面的0。我知道这很难,但很有效。
private static string RemoveTrailingZeros(string input)
{
for (int i = input.Length - 1; i > 0; i-- )
{
if (!input.Contains(".")) break;
if (input[i].Equals('0'))
{
input= input.Remove(i);
}
else break;
}
return input;
}