我有一个十进制值,它存储在我的数据库(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);
它可以在en-US中存储为“#。##”,但在en-AU中存储为“#。#”?
我很确定它不能,因为我不仅仅是四舍五入,而是使用数学转换? (例如,AU的值为10)但我想我会问这个问题。
我正试图避免一个丑陋的if语句来检查当前的文化并手动进行数学/舍入。
答案 0 :(得分:2)
您需要在资源中放置修饰符和格式字符串,以便您可以执行类似
的操作return (score * Resources.Global.ScoreModifier).ToString(Resources.Global.ScoreFormat);
答案 1 :(得分:1)
接受Phil的答案,但这是任何关心的人的实际修饰符/格式:
代码:
var formattedScore = (score / Convert.ToInt32(Global.ScoreModifier)).ToString(Global.ScoreFormat))
<强> Global.resx 强>
ScoreFormat n1
ScoreModifier 10
<强> Global.en-au.resx 强>
ScoreFormat n2
ScoreModifier 1
似乎工作......没有人发现问题?