2017-07-03 56 views
0

我使用Newtonsoft對象序列化到JSON。 ,都應該被填充的字段之一是包含數值的字段 - 浮子準確。當我在我的項目中創建汽車對象時,我在構造函數中使用了float。像這樣:轉換字符串值浮動 - 使用文本框

public class brakes 
    { 
     public float park_brake { get; set; } 
     public float work_brake { get; set; } 
     public float discrepancy { get; set; } 
    } 

用戶將填充文本框,這是一個字符串,但它應該是一個浮動。有沒有辦法轉換它?發現這樣的事情,但它不工作

Car.tires.front_value_mm = (float)Convert.ToDouble(textBox.Text); 
+0

爲什麼它不工作?什麼是錯誤信息?什麼是小數分隔符,逗號或點? –

+0

分隔符是逗號,我得到System.FormatException:無效的輸入字符串 –

回答

0

嘗試使用

float f1 = float.Parse(textBox.Text); 

編輯 - 奏效的解決方案......

float f1 = (float)double.Parse(textBox.Text) 
+0

System.FormatException:無效的輸入字符串 –

+0

嗨,我試過這個使用winforms,並沒有例外... –

+0

在我看來,它應該看起來像this Car.tires.front_value_mm = float.Parse(textBox.Text);並且在這種情況下有例外 –

0

嘗試以下操作:

public class brakes 
    { 
     private float _park_brake { get; set; } 
     private float _work_brake { get; set; } 
     private float _discrepancy { get; set; } 
     public string park_brake 
     { 
      get { return _park_brake.ToString(); } 
      set { _park_brake = float.Parse(value); } 
     } 
     public string work_brake 
     { 
      get { return _work_brake.ToString(); } 
      set { _work_brake = float.Parse(value); } 
     } 
     public string discrepancy 
     { 
      get { return _discrepancy.ToString(); } 
      set { _discrepancy = float.Parse(value); } 
     } 
    } 
0

你要找的是float.Parse()float.TryParse()方法。

float.Parse()被賦予了string它返回float值的string包含。

float.TryParse()被給予stringfloat變量設置爲out參數,它返回一個bool。它比float.Parse()要安全得多,因爲它返回true,當解析成功。這允許你檢查string是一個有效的float

不幸的是,float-strings可以用.或與,這取決於你是在培養寫的。確保你給的解析法培養你正在使用你的應用程序中的文化相匹配。您可以從System.Globalization.CultureInfo.CurrentCulture得到它。務必爲輸入設置正確的文化,否則將失敗。

下面是一些示例代碼:

float value; 
if(!float.TryParse(textBox.Text, out value, 
     System.Globalization.CultureInfo.CurrentCulture)) 
{ 
    MessageBox.Show("Wrong input!"); 
} 

來源:float.Parse()float.TryParse()

+0

我不能使用 浮點值,後來PT成的TryParse, 在我的情況下,它應該是這個樣子 –

+0

你可能要使用保存的價值只是解析浮點型變量,然後將其分配給屬性。 –

0

我不認爲使用float.Parse()有什麼差別。試試這個:

Car.tires.front_value_mm = (float)Convert.ToDouble(textBox.Text, new NumberFormatInfo() { NumberDecimalSeparator = "," });