在.Net String.Format中强制加号为正号

时间:2010-04-06 21:47:35

标签: c# formatting double sign

上下文:.Net,C#

我想打印一个由两个双打组成的复数。标志需要在虚部上显示。我想为每个部分使用默认的双重格式来最小化字符数。

我尝试使用String.Format(“{0:+ G; -G} {1:+ G; -G} j”,真实,虚构)但最终打印出来:“+ G-Gj”。不是我想要的。

有没有办法使用G说明符执行此操作,或者我是否需要执行自定义格式,这会牺牲自动切换指数,​​例如{1:+#######ë###; - #######ë###} J“

2 个答案:

答案 0 :(得分: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

根据需要调整。

答案 1 :(得分:0)

这可能是关闭......

如下:

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