为什么货币修饰符“ C”返回“?”而不是C#中的“ $”?

时间:2019-05-29 18:58:42

标签: c#

为什么下面的代码显示“?”而不是“ $”?

static void Main(string[] args)
{
    float price = 29.56f;
    Console.WriteLine(price.ToString("c"));
}

结果是:29,56 ?

1 个答案:

答案 0 :(得分:10)

这不是实际的<input class="selectedoptions" id="32" name="config-case" value="24" type="radio" onchange="updateImage(this.id);"> 字符-在控制台中打印的是占位符,因为当前的控制台字体没有本地货币的货币符号(?)的字形。 / p>

如果您始终想要美元,请使用System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol文化来格式化:

en-US

请勿将CultureInfo enUS = new CultureInfo("en-US"); String priceText = price.ToString( "C", enUS ); Console.WriteLine( priceText ); 用于其他文化,即使他们也使用美元(例如澳大利亚元),也要明确使用其文化-因此,如果将来该国家/地区更改其货币符号,您的程序仍然可以使用,或者它们是否还有其他格式设置规则(例如其他十进制符号)

en-US

此外,在处理货币或货币值时,请勿使用IEEE-754类型,因为它在设计上不精确。您应始终使用固定的十进制类型,例如CultureInfo australia = new CultureInfo("en-AU"); String priceText = price.ToString( "C", australia ); Console.WriteLine( priceText ); 或整数美分(尽管不能将System.Decimal林字符串使用整数美分)