为什么 bigint 数字不与 c# CultureInfo 分开?
Why bigint number not split with c# CultureInfo?
我是 C# 初学者,我在 SQL 服务器中有一个货币字段,该字段的数据类型是 bigint
例如我有这个号码:
12598546
我想以这种格式显示它:
12,598,546
我的 C# 代码:
query_statusOfRPTOST[i].price_year.ToString("N0", CultureInfo.CreateSpecificCulture("es-US"))
该代码在我的本地 PC 中工作正常,但是当应用程序在服务器中运行时,数字以以下格式显示:
12598,546
发生了什么?我该如何解决这个问题?
您可以这样使用 string.Format:
string.Format("{0:#,###0}", query_statusOfRPTOST[i].price_year)
如果您查看此 CultureInfo
的 NumberFormat
,您将看到下一个:
var culture = CultureInfo.GetCultureInfo("es-US");
Console.WriteLine(string.Join(",",culture.NumberFormat.NumberGroupSizes));
//output: 3,0
什么意思,根据msdn小数分隔符左边第一组是3位,其他不分组
如果你想获得以分组格式呈现的所需值,你应该执行以下操作之一:
- 创建特定文化,基于
es-US
并将 NumberGroupSizes
设置为 [3]
。
- 使用另一个现有的
CultureInfo
和预定义的 NumberGroupSizes
和 [3]
- 例如,en-US
.
- 按照 Ali 的建议使用特殊格式
第一个代码示例:
long a = 12598546;
var culture = CultureInfo.CreateSpecificCulture("es-US");
culture.NumberFormat.NumberGroupSizes = new int[] { 3 };
Console.WriteLine(a.ToString("N0", culture));
// output 12,598,546
第二个代码示例:
long a = 12598546;
Console.WriteLine(a.ToString("N0", CultureInfo.GetCultureInfo("en-US")));
// output 12,598,546
我是 C# 初学者,我在 SQL 服务器中有一个货币字段,该字段的数据类型是 bigint
例如我有这个号码:
12598546
我想以这种格式显示它:
12,598,546
我的 C# 代码:
query_statusOfRPTOST[i].price_year.ToString("N0", CultureInfo.CreateSpecificCulture("es-US"))
该代码在我的本地 PC 中工作正常,但是当应用程序在服务器中运行时,数字以以下格式显示:
12598,546
发生了什么?我该如何解决这个问题?
您可以这样使用 string.Format:
string.Format("{0:#,###0}", query_statusOfRPTOST[i].price_year)
如果您查看此 CultureInfo
的 NumberFormat
,您将看到下一个:
var culture = CultureInfo.GetCultureInfo("es-US");
Console.WriteLine(string.Join(",",culture.NumberFormat.NumberGroupSizes));
//output: 3,0
什么意思,根据msdn小数分隔符左边第一组是3位,其他不分组
如果你想获得以分组格式呈现的所需值,你应该执行以下操作之一:
- 创建特定文化,基于
es-US
并将NumberGroupSizes
设置为[3]
。 - 使用另一个现有的
CultureInfo
和预定义的NumberGroupSizes
和[3]
- 例如,en-US
. - 按照 Ali 的建议使用特殊格式
第一个代码示例:
long a = 12598546;
var culture = CultureInfo.CreateSpecificCulture("es-US");
culture.NumberFormat.NumberGroupSizes = new int[] { 3 };
Console.WriteLine(a.ToString("N0", culture));
// output 12,598,546
第二个代码示例:
long a = 12598546;
Console.WriteLine(a.ToString("N0", CultureInfo.GetCultureInfo("en-US")));
// output 12,598,546