2014-10-10 124 views
1

是否有一种将double转换为字符串的优雅方式,因此它被舍入到最大总长度内,但在其他方面类似于默认的中性文化格式?限制双字符的最大字符数

我不想只限制小数位数,因为用于符号和指数的字符数可能会改变,或者它可能不是科学记数法。

例如,具有最多20个字符

-1.23456789E-67 

应显示为

-1.23456789E-67 

123应显示为123,不1.23E+02

+0

['G'](http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx)格式应该产生最*紧凑的字符串表示。你可能想要实现自己的格式化程序(例如'double'的扩展方法),它将完成所有的逻辑:转换,检查等。 – Sinatr 2014-10-10 08:03:26

回答

0

由于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); 
    } 
} 
+0

这只是控制有效数字的数量,而不是字符。例如。 -1.2345678E-123变成-1.2346E-123(12个字符),但1234.5678变成1234.6(6个字符)。 – user1318499 2014-10-10 10:54:15