1
是否有一种将double转换为字符串的优雅方式,因此它被舍入到最大总长度内,但在其他方面类似于默认的中性文化格式?限制双字符的最大字符数
我不想只限制小数位数,因为用于符号和指数的字符数可能会改变,或者它可能不是科学记数法。
例如,具有最多20个字符
-1.23456789E-67
应显示为
-1.23456789E-67
而
123
应显示为123
,不1.23E+02
。
是否有一种将double转换为字符串的优雅方式,因此它被舍入到最大总长度内,但在其他方面类似于默认的中性文化格式?限制双字符的最大字符数
我不想只限制小数位数,因为用于符号和指数的字符数可能会改变,或者它可能不是科学记数法。
例如,具有最多20个字符
-1.23456789E-67
应显示为
-1.23456789E-67
而
123
应显示为123
,不1.23E+02
。
由于Sintar提到G格式说明符应该尽你所需。
double s = 1.31956544564371E+28;
Console.WriteLine("{0:G5}",s); // will print 1.3196E+28
下面是一个扩展方法可能是有益的:
public static class doubleExtensions
{
public static string GetDoubleString(this double source,int numOfChars){
string temp = "{0:G" + numOfChars + "}";
return string.Format(temp,source);
}
}
这只是控制有效数字的数量,而不是字符。例如。 -1.2345678E-123变成-1.2346E-123(12个字符),但1234.5678变成1234.6(6个字符)。 – user1318499 2014-10-10 10:54:15
['G'](http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx)格式应该产生最*紧凑的字符串表示。你可能想要实现自己的格式化程序(例如'double'的扩展方法),它将完成所有的逻辑:转换,检查等。 – Sinatr 2014-10-10 08:03:26