[英]C# currency format not working
我有一个控制台应用程序,具有以下内容:
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")));
打印? 代替€
代码有什么问题?
假设您的默认区域性应该打印欧元,那么代码中没有任何错误。 但是,您似乎是直接在控制台窗口中还是通过VS启动在程序窗口中运行该程序。 使用的默认代码页是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,该程序将按预期工作。
如果要从程序中控制它,请添加适当的编码
//Console.OutputEncoding = Encoding.Default;
//Console.OutputEncoding = Encoding.UTF8;
使用小数而不是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;
其次,是否打印€或$或其他货币符号将取决于您当前的文化。
例如
using System;
public class Program
{
public static void Main()
{
var value = 999999;
System.Console.WriteLine("Price {0:c}", value);
}
}
给我输出
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")));
相应地添加您的CultureInfo。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.