我有一个十进制值,它存储在我的数据库(SQL Server 2008中)与13精度,以及10文化为基础的字符串格式化十进制
例子规模:
10.6157894734
68.0750000000
96.8723684210
基本上,数字代表一个“得分”出100
现在,我想显示/表示该值以不同的方式,这取决于培养。
例如,在AU中,我想显示100以外的值,四舍五入到小数点后两位。
所以在上面的例子:
10.62
68.08
96.87
但在美国,我想显示出值为10,四舍五入至小数点后1位。 所以在上面的例子:
1.1
6.8
9.7
这个问题能有一个资源文件来完成,比如做这样的事情:
return score.ToString(Resources.Global.ScoreFormat);
凡可以存储为“###”。 in en-US,但“#。#” in en-AU?
我很确定它不能,因为我不只是四舍五入,而是使用数学转换? (例如AU值为10)但是我想我会问这个问题。
我试图避免一个丑陋的if语句,它检查当前的文化,并手动进行数学/舍入。
希望'1.6'是一个错字,实际上是'1.1'? – V4Vendetta 2012-04-02 06:31:34
@ V4Vendetta - 哈哈,是。 – RPM1984 2012-04-02 06:32:00
我想这个问题不是关于为类分数所属的实现自定义的ToString,能够处理你需要的东西......虽然......如果“格式化程序”可以触发类的方法来处理要格式化的数据,例如“#{CountryDepFmt}”将实例化CountryDepFmt(符合一些已知的接口),该接口将返回格式化的值并且也可以进行某种操作。如果区域是Au返回(值/ 10).ToString(“#。#”);或者任何正确的C#语法。 – ShinTakezou 2012-04-02 06:44:11