上下文:.Net,C#
我想打印一个由两个双打组成的复数。标志需要在虚部上显示。我想为每个部分使用默认的双重格式来最小化字符数。
我尝试使用String.Format(“{0:+ G; -G} {1:+ G; -G} j”,真实,虚构)但最终打印出来:“+ G-Gj”。不是我想要的。
有没有办法使用G说明符执行此操作,或者我是否需要执行自定义格式,这会牺牲自动切换指数,例如{1:+#######ë###; - #######ë###} J“
答案 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)