【发布时间】:2014-03-29 06:56:05
【问题描述】:
是否可以在不指定格式字符串的情况下将integer(或double 等)转换为String 时使用的默认数字格式?
C# 示例:
int i = 123456;
string s = "Hello " + i;
// or alternatively with string.Format without format definition
string s = string.Format("Hello {0}", i);
ASP.NET Razor 示例:
<div>
Hello @i
</div>
我认为所有这些代码行都隐含地使用了Int32 的默认ToString() 方法。毫不奇怪,所有这些代码行都会导致"Hello 123456",但我想要"Hello 123,456"。
那么我是否可以指定默认使用"N0"(至少对于integer)?
我已经找到了Set Default DateTime Format c# 的问题 - 看起来不错,但它对我的数字没有帮助。
编辑: 我知道我可以编写一个可以在整个应用程序中使用的扩展方法,但这不是我想要的。我想找到一个属性(可能隐藏在CultureInfo 或NumberFormatInfo 中),它当前设置为"G",默认使用Int32.ToString() 实现。
【问题讨论】:
-
你能用cultureInfo.NumberFormat做点什么吗,就像你的示例网址使用DateTimeFormat一样?
-
这可能有点太宽泛了。根据上下文,可以执行此操作。对于 MVC,您可以创建一个 DisplayTemplate 并使用
@Html.DisplayFor。对于某些 WinForms 控件,您可以在类属性上指定属性。 -
@TomBrown 不,这就是我发布问题的原因。 :-)
-
为什么不自定义 CultureInfo.CurrentCulture.NumberFormat?例如。 CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator = ".";
标签: c# .net cultureinfo number-formatting