2014-01-09 58 views
2
class Program 
{ 
    static void Main(string[] args) 
    { 
     string str = "0.898"; 
     double dbl = Double.Parse(str); 

     dbl++; 

     Console.WriteLine(dbl); 
     Console.ReadLine(); 
    } 
} 

我需要工作的所有其他格式,例如「100」。但是,一旦我添加一個'點',我有一個FormatException錯誤。C#FormatException double.parse(),爲什麼不是0.89解析?

+8

代碼在哪個文件下運行?它是否期望0.89而不是0.89? – Grhm

回答

8

也許嘗試:

double dbl = double.Parse(str , CultureInfo.InvariantCulture); 

檢查在這裏ideone

你的問題是,你的文化不允許點的。不變文化不是唯一的解決方案,你也可以指定你的文化,並使用它的分隔符。如果你現在的文化只接受逗號作爲分隔符,它也可能是一個用逗號替換點的解決方案。沒有明確指定文化會影響解析運行不同文化的不同機器中的數字。

所有文化特定的東西總是很棘手,應儘可能精確地定義。如果你知道你將使用哪種雙格式,請定義它。如果您知道您將使用哪種日期格式,請指定它。

+0

這個解釋應該解釋爲什麼不變的文化不是魔法子彈,除非你保存它。 – Gusdor