2014-10-10 79 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