2

コンテキスト:.Net、C#

2つのdoubleから作られた複素数を印刷したいと思います。サインは架空の部分に表示する必要があります。文字数を最小限に抑えるために、各部分にデフォルトの二重フォーマットを使用したいと思います。

String.Format( "{0:+ G; -G} {1:+ G; -G} j"、実数、虚数)を使用してみましたが、「+G-Gj」と出力されました。私が欲しかったものではありません。

G指定子を使用してこれを行う方法はありますか、または指数の自動切り替えを犠牲にするカスタム形式を実行する必要がありますか?たとえば、{1:+#。###### e ###;-#。# ##### e ###} j "

4

2 に答える 2

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

必要に応じて微調整します。

于 2010-04-06T22:39:20.310 に答える
0

これは多分的外れ…

次のようなものはどうですか:

String.Format("+{0:g}-{0:g}{1:g}-{1:g}j", real, imaginary)
于 2010-04-06T22:26:42.773 に答える