1. 程式人生 > >C#報錯:輸入字串格式不正確

C#報錯:輸入字串格式不正確

List<Model> data1 = list.Select(x => new Model { num = Convert.ToDecimal(x.PM25) }).OrderBy(x => x.num).ToList();

修改如下:

data = list.OrderBy(x => x.CO).Select(x => x.CO).ToList();
                List<decimal> list3 = new List<decimal>();
                decimal s3 = 0;
                list3 = data.ConvertAll<decimal>(x => decimal.TryParse(x, out s3) == true ? s3 : s3);

附TryParse的使用方法如下:

https://blog.csdn.net/firetaker/article/details/5638914

Convert.ToDouble double.TryParse 使用方式比較

2010年06月01日 11:20:00 firetaker 閱讀數:5258 標籤: exceptionstring測試

 

[c-sharp] view plain copy

  1. static void Main(string[] args)  
  2.       {  
  3.          try  
  4.          {  
  5.             string str = "";              
  6.             // 如果當前str為空串,則出異常:輸入字串格式不正確  
  7.             Console.WriteLine(Convert.ToDouble(str));              
  8.          }  
  9.          catch (Exception ex)  
  10.          {  
  11.             Console.WriteLine(ex.Message);  
  12.          }  
  13.          Console.ReadLine();  
  14.       }  

 

以上程式碼中出現的結果為:輸入字串格式不正確。因為傳入的字串為空,轉換成double型別不成功

 

[c-sharp] view plain copy

  1. static void Main(string[] args)  
  2.       {  
  3.          try  
  4.          {  
  5.             string str = "123.123";              
  6.             // 如果當前str為空串,則出異常:輸入字串格式不正確  
  7.             Console.WriteLine(Convert.ToDouble(str));              
  8.          }  
  9.          catch (Exception ex)  
  10.          {  
  11.             Console.WriteLine(ex.Message);  
  12.          }  
  13.          Console.ReadLine();  
  14.       }  

 

隨便對str賦值一個合適的值,得到結果為:123.123

下面轉換用另外一種方式處理:

第一種情況設定當前的str為空

 

[c-sharp] view plain copy

  1. static void Main(string[] args)  
  2.     {  
  3.        try  
  4.        {  
  5.           string str = "";  
  6.           double rst = 0.0;  
  7.           Console.WriteLine("轉換結果為:" + double.TryParse(str, out rst));  
  8.           Console.WriteLine(rst);              
  9.        }  
  10.        catch (Exception ex)  
  11.        {  
  12.           Console.WriteLine(ex.Message);  
  13.        }  
  14.        Console.ReadLine();  
  15.     }  

 

得到的結果為:

轉換結果為:false

0

第二種情況:

 

[c-sharp] view plain copy

  1. static void Main(string[] args)  
  2.       {  
  3.          try  
  4.          {  
  5.             string str = "123.123";  
  6.             double rst = 0.0;  
  7.             Console.WriteLine("轉換結果為:" + double.TryParse(str, out rst));  
  8.             Console.WriteLine(rst);              
  9.          }  
  10.          catch (Exception ex)  
  11.          {  
  12.             Console.WriteLine(ex.Message);  
  13.          }  
  14.          Console.ReadLine();  
  15.       }  

 

 

得到的結果為:

轉換結果為:true

123.123

 

由以上的測試結果可以看出。使用double.TryParse()做型別轉換更安全

可以對返回值進行判斷,也可以設定預設的返回值0