2012-04-02 62 views
2

我有一個十進制值,它存儲在我的數據庫(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語句,它檢查當前的文化,並手動進行數學/舍入。

+0

希望'1.6'是一個錯字,實際上是'1.1'? – V4Vendetta 2012-04-02 06:31:34

+0

@ V4Vendetta - 哈哈,是。 – RPM1984 2012-04-02 06:32:00

+0

我想這個問題不是關於爲類分數所屬的實現自定義的ToString,能夠處理你需要的東西......雖然......如果「格式化程序」可以觸發類的方法來處理要格式化的數據,例如「#{CountryDepFmt}」將實例化CountryDepFmt(符合一些已知的接口),該接口將返回格式化的值並且也可以進行某種操作。如果區域是Au返回(值/ 10).ToString(「#。#」);或者任何正確的C#語法。 – ShinTakezou 2012-04-02 06:44:11

回答

2

你將需要把改性劑和在你的資源格式字符串,這樣你可以這樣做

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

ahhh ...現在你的東西...只需要弄清楚修飾符/格式是什麼... – RPM1984 2012-04-02 06:32:37

+0

明白了。將爲任何關心的人添加答案,並且在Stack允許我這樣做時接受這個答案。 – RPM1984 2012-04-02 06:40:18

1

接受菲爾的答案,但是這是一個任何人的實際改性劑/格式誰在乎:

代碼:

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

Global.resx

ScoreFormat  n1 
ScoreModifier 10 

Global.en-au.resx

ScoreFormat  n2 
ScoreModifier 1 

似乎work..anyone發現了一個問題嗎?

+0

出於某種原因,我認爲你可以添加一個數字資源 - 你的解決方案是好的。 – Phil 2012-04-02 06:55:03

+0

@Phil - 數字?我認爲所有的C#資源字符串實際上是字符串..因此int強制是必要的嗎? – RPM1984 2012-04-02 06:58:09

+0

是的你是正確的,我想說我沒有想直接:) – Phil 2012-04-02 06:59:39

相關問題