2010-09-18 49 views
2

我正在用C#編寫程序,用於在模型格式之間進行轉換。 模型格式包含數字,如「-0.136222」。System.Convert.ToSingle()問題,(1.5)與(1,5)

我可以使用System.Convert.ToSingle()將其轉換爲浮點數。但在德國,我們使用逗號作爲小數點(-0,136222),並且System.Convert在此處選擇。現在我遇到了它不能識別小數點的問題,因爲它需要逗號。

簡而言之, 我們有這樣的:「-0.136222」 我們得到這樣的:-0136222.0f 因爲它需要這樣的:「-0,136222」

我可以告訴系統識別逗號作爲小數點只爲我的計劃?解決方法將不起作用,因爲它需要可移植(到其他國家)。

+0

這不是本地化問題,它是國際化問題。本地化標籤在這裏無關緊要。 – 2010-09-18 21:06:58

+0

呃,它需要是可移植的,但數據格式不正確。當用戶居住在美國時,它會有逗號嗎?你需要一個配置選項。 – 2010-09-18 21:10:11

回答

2

使用Single.Parse()來代替,就像這樣:

Single.Parse("-0.136222", CultureInfo.InvariantCulture); 

InvariantCulture的是告訴方法來解析字符串忽略區域設置特定的小數和分組分隔符的方式。

0

保持原樣。安裝在客戶的電腦在.NET Framework將自動選擇來解析該計算機設置爲國家設置數據的正確方法。因此,例如,在歐洲大陸,它會使用逗號分析您的float,但在美國,英國和其他使用小數點的地方,它將使用小數點解析數據。

當然,你可以通過使用CultureInfo.InvariantCulture(像帕維爾曾建議)或任何其他CultureInfo覆蓋的.NET這個Culture特異性的定位功能,但是這將意味着你必須專門設置它爲每一個國家你賣你的軟件。遠不如就讓框架爲你做的工作:)


注:這也將意味着一個(比方說)在美國工作德國人與他的PC設置進行本地化的德國將如他所料,用逗號分析他的float,而不是僅僅因爲他位於美國而使用小數點。

+0

對不起,我可能讓自己不清楚。這確實是我的問題,.NET爲我選擇。模型文件格式總是有小數點作爲分數,這在美國但在德國不起作用。 – Hannesh 2010-09-22 15:57:17

+0

@Hannesh:對不起,我以爲你是在用戶輸入,而不是在文件中讀取。 – 2010-09-22 18:08:56