我在StackOverFlow上找到了这个问题,但它没有解决我的问题。如何将double格式化为字符串并仅在必要时显示小数位?
Weight
0.500
18.000
430.000
通过上面网址中的解决方案,我的结果显示为以下形式:
Weight
0.5
18
430
我的问题是在小数位上,我想将小数位显示为3个数字,就像这样:
Weight
0.500
18
430
我在StackOverFlow上找到了这个问题,但它没有解决我的问题。如何将double格式化为字符串并仅在必要时显示小数位?
Weight
0.500
18.000
430.000
Weight
0.5
18
430
我的问题是在小数位上,我想将小数位显示为3个数字,就像这样:
Weight
0.500
18
430
我认为您不能仅使用单个string.Format()实现您想要的功能。因此,您可以使用一个子句:
if(weight % 1.0 > 0){
string.Format("{0:0.000}", weight)
}
else {
string.Format("{0:0}", weight)
}
string.Format(weight % 1.0 > 0 ? "{0:0.000}" : "{0:0}", weight)
编辑:抱歉,我漏掉了一部分 =))
编辑:如果您需要对结果进行取底操作,可以使用以下方法:
string.Format(weight % 1.0 >= 0.001 ? "{0:0.000}" : "{0:0}", weight)
num.ToString("G3") // for 3 significant digits
http://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx
string format1 = GetFormat(123.4567);
string format2 = GetFormat(123.45);
string format3 = GetFormat(123.0);
//format1 = 123.46
//format2 = 123.45
//format3 = 123
private static string GetFormat(double d)
{
string format;
if (d == Convert.ToInt32(d))
format = string.Format("{0:0.##}", d);
else
format = string.Format("{0:0.00}", d);
return format;
}
更多信息:
http://csharpexamples.com/c-string-formatting-for-double/
http://msdn.microsoft.com/en-us/library/vstudio/0c899ak8%28v=vs.100%29.aspx
string[] strList = Weight.ToString().Split('.');//or ',' for diffrent regions
if(strList[1] == "000")
str = string.Format("{0:#,0.########}", b);
谢谢:)