2015-02-10 93 views
0

我试图将字符串转换为加倍,但未能如愿......C#转换为字符串倍增

我试图模拟一个虚拟的代码是我的应用程序的一部分,该文本值来自我没有控制权的第三方应用程序。

我需要将以通用格式“G”表示的字符串转换为双精度值并在文本框中显示。

 string text = "G4.444444E+16"; 
     double result; 

     if (!double.TryParse(text, NumberStyles.Any, CultureInfo.InvariantCulture, out result)) 
     { 
     } 

我试图改变的NumberStyles和CultureInfo的,但仍是结果总是返回0所说的其实是错误的代码?

+0

你尝试'System.Globalization.NumberStyles.Float'? – Rohit 2015-02-10 14:17:04

+3

相关? http://stackoverflow.com/questions/3879463/parse-a-number-from-exponential-notation - 你可能需要先修剪掉'G'。 – Corak 2015-02-10 14:17:30

+0

那为什么那边那边呢? – virusrocks 2015-02-10 14:22:07

回答

0

刚刚摆脱这种"G"

string text = "G4.444444E+16"; 
    string text2 = text.SubString(1); // skip first character 
    double result; 

    if (!double.TryParse(text2, NumberStyles.Any, 
     CultureInfo.InvariantCulture, out result)) 
    { 
    } 
0

下面是详细信息:

 Thread.CurrentThread.CurrentCulture = new CultureInfo("ru-RU"); 

     // if input string format is different than a format of current culture 
     // input string is considered invalid, unless input string format culture is provided as additional parameter 

     string input = "1 234 567,89"; // Russian Culture format 
     // string input = "1234567.89"; // Invariant Culture format 

     double result = 9.99; // preset before conversion to see if it changes 
     bool success = false; 

     // never fails 
     // if conversion is impossible - returns false and default double (0.00) 
     success = double.TryParse(input, out result); 
     success = double.TryParse(input, NumberStyles.Number, CultureInfo.InvariantCulture, out result); 

     result = 9.99; 
     // if input is null, returns default double (0.00) 
     // if input is invalid - fails (Input string was not in a correct format exception) 
     result = Convert.ToDouble(input); 
     result = Convert.ToDouble(input, CultureInfo.InvariantCulture); 

     result = 9.99; 
     // if input is null - fails (Value cannot be null) 
     // if input is invalid - fails (Input string was not in a correct format exception) 
     result = double.Parse(input); 
     result = double.Parse(input, CultureInfo.InvariantCulture);