2011-10-11 59 views
19

我的意思是,我想轉換此:如何使用Convert.ChangeType()時conversionType是十進制和輸入爲「40.00」

string a = "40.00"; 
Convert.ChangeType(a, typeof(decimal)) 

的結果是「4000」

一個十進制值

問題在於,轉換調用在xmlToObject轉換器中是非常抽象的泛型方法。我不想以編程方式添加很多不同的例外以正確轉換。

關於克里斯

+4

「40,00」是否正確轉換? – Joe

+2

你們需要改變你的文化背景...... – nawfal

回答

33

小數點可能不會被當前文化中的句點字符表示。

在一般情況下,進行區域性不變的轉換時,最好到指定CultureInfo.InvariantCultureIFormatProvider參數傳遞給method

(decimal) Convert.ChangeType(a, typeof(decimal), CultureInfo.InvariantCulture); 
3

的轉化利用,使用期限爲千位分隔符文化最有可能完成而不是小數點分隔符。

指定文化,當你轉換值:

Convert.ToDecimal(a, CultureInfo.InvariantCulture) 
2

下面的代碼

string s = "40.00"; 
decimal d = (decimal)Convert.ChangeType(s, typeof(decimal)); 

使得d = 40。這看起來對我罰款。你的問題到底是什麼?

編輯: 看來你可能有一個與使用的文化問題。 對此進行轉換:

string s = "40.00"; 
decimal d = (decimal)Convert.ChangeType(s, typeof(decimal), CultureInfo.InvariantCulture); 
+3

問題一如既往,'.'並不總是小數點分隔符。 –

+0

tx指出。我編輯了我的回覆。 –

+1

@DavidHeffernan什麼樣的令人毛骨悚然的文化是:/ – nawfal

相關問題