将 Int 更改为字符串然后格式化字符串 [重复]
Posted
技术标签:
【中文标题】将 Int 更改为字符串然后格式化字符串 [重复]【英文标题】:Changing a Int to a String then Formatting the String [duplicate] 【发布时间】:2018-02-07 00:42:15 【问题描述】:<p class="card"> Credit Limit: <b style="color: #00e500 ;"> $@Model.CreditLimit.ToString().ToLocaleString()</b> </p>
我正在使用 ToString()
将 Int 更改为 String 然后我尝试使用 ToLocaleString()
格式化我得到的数字。该数字如下所示:80567。我正在尝试将其格式化为如下所示:80,567。
我得到的错误是“字符串不包含“ToLocaleString”的定义
想法?
编辑:将关闭此问题。找到我的错误所在的位置。如果您对该主题有任何疑问,请参考此链接:Link to *** issue
【问题讨论】:
toLocaleString 可用于其他语言,而不是 C#,除非您实现扩展方法。 另外,我不认为 ToLocaleString 将是一个字符串上的方法,而是一个 int 因为它甚至会对像“hello world!”这样的字符串做什么? @dominic-gozza 您能否将答案标记为已接受或告诉我们缺少什么? 【参考方案1】:我看到您想显示金额,您应该为此使用货币 NumberFormatInfo。首先获取当前的 CultureInfo 或为特定的语言国家创建它:
var culture = Thread.CurrentThread.CurrentCulture;
// or
var culture = new CultureInfo("en-US");
然后用它来格式化你的号码:
var creditLimit = 100;
var creditLimitFormatted = creditLimit.ToString("c", culture);
“c”代表“货币”,您可以在NumberFormatInfo的文档中查看其他可能的选项。
Formatting Numeric Data for a Specific Culture
【讨论】:
【参考方案2】:@Model.CreditLimit
- 这是整数
@Model.CreditLimit.ToString()
- 这是一个字符串
现在您正在尝试执行ToLocaleString()
,这显然是错误
"字符串不包含"ToLocaleString"的定义
要执行您想要归档的操作,请尝试以下解决方案:
String.Format("0:n", @Model.CreditLimit);
//输出:80,567.00
string.Format("0:n0", @Model.CreditLimit);
// 输出:80567
【讨论】:
【参考方案3】:这是因为int
(Int32
) 类是不可格式化的,也就是说,它的表示不依赖于文化,例如。你必须推出你的格式化代码。
【讨论】:
【参考方案4】:article 很好地概述了可用的不同格式类型。听起来你想要Numeric Format Specifier。你会这样使用它
int intValue = 123456789;
Console.WriteLine(intValue.ToString("N1", CultureInfo.InvariantCulture));
// Displays 123,456,789.0
【讨论】:
以上是关于将 Int 更改为字符串然后格式化字符串 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
将数字格式从 10000 更改为 10,000 android [重复]