C#货币格式不起作用
我有一个控制台应用程序,具有以下功能:C#货币格式不起作用,c#,formatting,C#,Formatting,我有一个控制台应用程序,具有以下功能: var value = 999999; System.Console.WriteLine("Price {0:c}", value); // Prints: Price ? 999.999,00 // Expecting: Price € 999.999,00 下一行打印价格为999.999,00美元 System.Console.WriteLine("Price {0}", value.ToString("c", new CultureInfo("e
var value = 999999;
System.Console.WriteLine("Price {0:c}", value);
// Prints: Price ? 999.999,00
// Expecting: Price € 999.999,00
下一行打印价格为999.999,00美元
System.Console.WriteLine("Price {0}", value.ToString("c", new CultureInfo("en-US")));
但这句话:
System.Console.WriteLine("Price {0}", value.ToString("c", new CultureInfo("fr-BE")));
打印?而不是€
代码有什么问题吗?使用而不是int
public class TestDecimalFormat
{
static void Main ()
{
decimal x = 0.999m;
decimal y = 9999999999999999999999999999m;
Console.WriteLine("My amount = {0:C}", x);
Console.WriteLine("Your amount = {0:C}", y);
}
}
首先,,
var int value=999999代码>
这是不对的
可以是
var value = 999999;
or
int value = 999999;
第二,,
它是否打印欧元、美元或其他货币符号取决于您当前的文化
e、 g
给我输出
Price $999,999.00
要指定货币符号,我们还可以执行以下操作
var numberFormatInfo = CultureInfo.CurrentCulture.NumberFormat;
numberFormatInfo = (NumberFormatInfo) numberFormatInfo.Clone();
numberFormatInfo.CurrencySymbol = "€";
Console.WriteLine(string.Format(numberFormatInfo, "{0:c}", value));
根据这一点,您可以按如下方式修改代码:
Console.WriteLine("Price: " + value.ToString("C", CultureInfo.CreateSpecificCulture("en-US")));
相应地添加您的文化信息。假设您的默认文化应该打印欧元,代码中没有任何错误。但是,您似乎是在控制台窗口中直接或通过VS launch运行该程序。使用的默认代码页是437,不能显示欧元符号。您必须将其更改为一个可以,例如1252
C:\>chcp
Active code page: 437
C:\>chcp 1252
Active code page: 1252
C:\>\Full\Path\To\Your\Program.Exe
€ 9.999,00
现在,如果你运行你的程序,你会看到一些不同的东西。如果使用默认字体(光栅字体),则仍无法正确显示欧元符号。将其更改为Lucida控制台,程序应按预期工作
如果要从程序中控制此操作,请添加适当的编码
//Console.OutputEncoding = Encoding.Default;
//Console.OutputEncoding = Encoding.UTF8;
指纹在哪里?在不支持扩展ASCII或Unicode字符的控件中?很抱歉复制/粘贴导致“var int”,代码是正确的,可以编译。我期望得到与您相同的结果,但对我不起作用。对其进行了测试,但没有帮助:(大写C而不是小写?活动代码页:850,将字体更改为Lucida Console,但仍然没有working@Stacked,从1252而不是850开始。将当前输出编码“西欧(DOS)”更改为Unicode(UTF-8)已解决问题:System.Console.outpunecoding=Encoding.UTF8;谢谢您
//Console.OutputEncoding = Encoding.Default;
//Console.OutputEncoding = Encoding.UTF8;