基于区域性的十进制字符串格式

本文关键字:字符串 格式 十进制 区域性 | 更新日期: 2023-09-27 18:29:38

我有一个十进制值,它存储在我的数据库(SQL Server 2008)中,精度为13,小数位数为10。

示例:

10.6157894734
68.0750000000
96.8723684210

基本上,这些数字代表100分中的"分数"。

现在,我想根据不同的文化,以不同的方式显示/表示这个值。

例如,在AU中,我想显示100中的值,四舍五入到小数点后2位。

所以在上面的例子中:

10.62
68.08
96.87

但在美国,我想显示10中的值,四舍五入到小数点后1位。所以在上面的例子中:

1.1
6.8
9.7

这可以用资源文件来完成吗?例如,做一些类似的事情:

return score.ToString(Resources.Global.ScoreFormat);

在美国,它可以被存储为"#.##",但在澳大利亚,它可以存储为"#.[strong>?

我很确定它不能,因为我不仅要四舍五入,还要用数学变换?(例如AU的值/10)但我想问这个问题。

我试图避免一个丑陋的if语句,它检查当前的区域性并手动进行数学/舍入。

基于区域性的十进制字符串格式

您需要在资源中放入一个修饰符和一个格式字符串,以便执行类似的操作

return (score * Resources.Global.ScoreModifier).ToString(Resources.Global.ScoreFormat);

接受Phil的回答,但这是任何关心的人的实际修改器/格式:

代码:

var formattedScore = (score / Convert.ToInt32(Global.ScoreModifier)).ToString(Global.ScoreFormat))

全局.resx

ScoreFormat     n1  
ScoreModifier   10  

Global.en au.resx

ScoreFormat     n2  
ScoreModifier   1   

似乎有效。。有人发现问题了吗?