Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#货币格式不起作用_C#_Formatting - Fatal编程技术网

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;