2013-05-16 20 views
1

我有以下幾點:Double.Parse在德國的系統結果逗號而不是小數點

private static string someValue = "0.1"; 

我需要將其轉換成雙層,以便做一些計算。 在德國的系統上,我得到的轉換爲0,1而不是0.1,我需要它爲0.1。 我試過如下:

double d = Convert.ToDouble(s_valueDeadband10Percent, CultureInfo.InvariantCulture.NumberFormat); // still getting 0,1 

double d = Convert.ToDouble(s_valueDeadband10Percent, CultureInfo.InvariantCulture); // still getting 0,1 

任何想法?

+0

當字段實際上是'someValue'時,爲什麼要轉換's_valueDeadband10Percent'?你的標題也顯示'Double.Parse'和你的代碼'Convert.ToDouble'。請更徹底。 –

回答

5

在德語系統我得到的轉換爲0.1,而不是0.1,我需要它爲0.1。

不,你沒有得到這些。你會得到約爲十分之一的double值。價值並不是一個文本的「事物」。它可以是轉換爲爲文本,但這是一個不同的操作。如果您確實需要文本值,則需要查找該操作的位置,並將更改爲以使用CultureInfo.InvariantCulture。但是,如果你可以在沒有轉換回字符串的情況下離開,那會更好。

當然,如果可能的話,你應該改變你的靜態變量是一個double入手:

private static double someValue = 0.1; 

這樣就可以避免解析了。

+0

它也似乎是一個調試器/視覺工作室顯示問題,因爲OP將字符串轉換爲雙倍,他抱怨雙顯示「0,1」而不是「0.1」。 –

+0

@TimSchmelter:是的,這就是我的意思,「它可以轉換爲文本,但這是一個不同的操作。您需要找到該操作的位置,並將其更改爲使用CultureInfo.InvariantCulture,如果您確實需要文本值「。我們不知道OP在哪裏將值轉換回文本。 –

2

我認爲你混淆了你的double的字符串表示與實際值。

您的代碼應該很好地將字符串「0.1」轉換爲0.1d。無論何時打印(在調試器,控制檯或網頁上),都需要將其轉換回字符串,這可能隱含在您的案例中。 double只是一些浮點數位,它本身沒有定義它的打印表示。

如果在德語文化中完成了從double到string的轉換,您將看到「0,1」。

嘗試打印此

d.ToString(CultureInfo.InvariantCulture) 
相關問題