我正在尝试将某种货币与右边对齐:
double number1 = 150.45;
double number2 = 1400.95;
//Output kr. 150,45
Console.WriteLine("{0:c2}", number1);
//Output kr. 1.400,95
Console.WriteLine("{0:c2}", number2);
但我希望我的输出看起来像这样。
//Output kr. 150.45
//Output kr. 1.400,95
哪个数字与右边对齐?
答案 0 :(得分:6)
系统很难说出你的号码有多少个位置。所以你必须自己决定。如果您已经决定使用String.PadLeft
之类的内容例如
Console.WriteLine("kr. {0}", number1.ToString("#,##0.00").PadLeft(10,' '));
答案 1 :(得分:4)
string sym = CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol;
Console.WriteLine("{0}{1,10:#,##0.00}",sym, number1);
Console.WriteLine("{0}{1,10:#,##0.00}",sym, number2);
答案 2 :(得分:2)
这适用于任何文化:
int width = 20;
string result = 1400.95.ToString("C");
NumberFormatInfo nfi = Thread.CurrentThread.CurrentCulture.NumberFormat;
if (nfi.CurrencyPositivePattern % 2 == 0)
{
result = nfi.CurrencySymbol +
result.Substring(nfi.CurrencySymbol.Length).PadLeft(width);
}
else
{
result = result.PadLeft(width + nfi.CurrencySymbol.Length);
}
// result == "$ 1,400.95" (en-US)
// "£ 1,400.95" (en-GB)
// " 1.400,95 €" (de-DE)
// " 1.400,95 kr" (sv-SE)
// " 1.401 kr." (is-IS)
// "kr 1 400,95" (nb-NO)
// "kr. 1.400,95" (da-DK) (!)
答案 3 :(得分:2)
当然这不如接受的答案那么好,但我对右对齐有同样的问题,我的直接反应是:
//Output kr. 150,45
Console.WriteLine("{0,10}",string.Format("{0:c2}",number1));