2010-04-06 2 views
2

컨텍스트 : .Net, C#.Net String.Format에서 양수 기호를 강제로 입력하십시오.

두 개의 복식으로 된 복소수를 인쇄하고 싶습니다. 기호는 허수 부에 표시해야합니다. 나는 문자의 수를 최소화하기 위해 각 부분에 대해 기본 이중 포맷을 사용하고 싶다.

String.Format ("{0 : + G; -G} {1 : + G; -G} j", 실제, 가상)을 사용했지만 인쇄가 끝났습니다. "+ G-Gj". 내가 원한 것은 아니었다.

G 지정자를 사용하여이 작업을 수행 할 수있는 방법이 있습니까? 아니면 지수를 자동 전환하는 맞춤 형식을 수행해야합니까? 예 : {. 1 : + # ###### 전자 ### - # ###### 전자 ###.} J "

답변

3

는 이례적인 일이다,하지만 당신은 쉽게 복잡한 클래스의 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

다음과 같이 조정하면됩니다. re.ToString ("G") + (im.CompareTo (0.0)> = 0? "" "" ") + im.ToString ("G ") +"j "; –

0

이 해제 방법 아마 ...

방법에 대해 뭔가 같은 :

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