为什么下面的代码显示“?”而不是“ $”?
static void Main(string[] args)
{
float price = 29.56f;
Console.WriteLine(price.ToString("c"));
}
结果是:29,56 ?
答案 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
林字符串使用整数美分)