2010-04-06 21 views
2

上下文:.Net,C#在.Net中強制使用雙精度正弦符String.Format

我想打印由兩個雙打組成的複數。標誌需要在虛部顯示。我想爲每個部分使用默認的雙重格式來減少字符數量。

我試過使用String.Format(「{0:+ G; -G} {1:+ G; -G} j」,real,imaginary),但最終打印結果爲「+ G-Gj」。不是我想要的。

有沒有辦法使用G說明符來做到這一點,或者我是否需要做一個自定義格式來犧牲自動切換指數,​​例如: {1:+#######è###; - #######è###} J」

回答

3

這是不尋常的,但你可以很容易地覆蓋您的Complex類的ToString方法,例如:

class Complex { 
    private double mReal, mImaginary; 
    public Complex(double real, double imag) { mReal = real; mImaginary = imag; } 
    private string WithSign(double value) { 
     return value >= 0 ? "+" + value.ToString("N") : value.ToString("N"); 
    } 
    public override string ToString() { 
     return WithSign(mReal) + "i" + WithSign(mImaginary); 
    } 
    } 

使用範例:

static void Main(string[] args) { 
    var c = new Complex(1, -1); 
    Console.WriteLine(c.ToString()); 
    Console.ReadLine(); 
    } 

輸出:

+1.00i-1.00 

扭捏是必要的。

+0

調整如下,這會做。 (「G」)+(im.CompareTo(0.0)> = 0?「+」:「」)+ im.ToString(「G」)+「j」; re.ToString – 2010-04-07 01:44:56

0

這可能是遙遠......

怎麼樣東西像:

String.Format("+{0:g}-{0:g}{1:g}-{1:g}j", real, imaginary)