如何在格式字符串中使用独立于区域设置的小数点和数字分隔符?

发布于 2024-10-23 11:46:57 字数 323 浏览 0 评论 0原文

我正在使用以下内容来格式化列值(绑定到十进制类型的值?):

[DisplayFormat(DataFormatString = "{0:N2}")] 

我现在想将其更改为以下格式:

[DisplayFormat(DataFormatString = "{0:#,###.00##}")]

但是,这与区域设置无关,因为我对小数和数字分隔符进行了硬编码。基本上,我想显示带有适当数字和小数点分隔符的字符串。另外,我希望小数点分隔符后最少有两个零,最多有 4 个零。 是否可以在编译时指定这样的字符串?

I am using the following to format a column value (bound to value of type decimal?):

[DisplayFormat(DataFormatString = "{0:N2}")] 

I want to now change it to the following format :

[DisplayFormat(DataFormatString = "{0:#,###.00##}")]

But, this isn't locale independent as I am hard coding decimal and numeric separator. Basically, I want to display a string with appropriate numeric and decimal separators. Also, I want minimum two zeros after decimal separator and maximum of 4 zeros.
Is it possible to specify such a string at compile-time?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

誰認得朕 2024-10-30 11:46:57

但是,这与区域设置无关,因为我对小数和数字分隔符进行硬编码

不,你不是;在格式说明符中, ., 分别表示“小数分隔符”和“千位分隔符”,而不是字面逗号和句点。它应该可以正常工作。例如,在 fr-FR 文化中,“#,###.00##”应显示为“1 234,56”:

var culture = CultureInfo.GetCultureInfo("fr-fr");
decimal d = 1234.56M;
string s = d.ToString("#,###.00##'", culture); // "1 234,56"

But, this isn't locale independent as I am hard coding decimal and numeric separator

No you aren't; in format specifiers the . and , mean "decimal separator" and "thousands separator" respectively, not literal commas and periods. It should work correctly. For example, '#,###.00##' in a fr-FR culture should come out as "1 234,56":

var culture = CultureInfo.GetCultureInfo("fr-fr");
decimal d = 1234.56M;
string s = d.ToString("#,###.00##'", culture); // "1 234,56"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文