C# 使用文本框将字符串值转换为浮点值
我正在使用Newtonsoft将对象序列化为json。 其中一个应该被填充的字段是一个包含数值的字段——一个浮点值。当我在我的项目中创建一个car对象时,我在构造函数中使用了float。像这样:C# 使用文本框将字符串值转换为浮点值,c#,string,textbox,floating-point,type-conversion,C#,String,Textbox,Floating Point,Type Conversion,我正在使用Newtonsoft将对象序列化为json。 其中一个应该被填充的字段是一个包含数值的字段——一个浮点值。当我在我的项目中创建一个car对象时,我在构造函数中使用了float。像这样: public class brakes { public float park_brake { get; set; } public float work_brake { get; set; } public float discrepancy
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);
试用
float f1 = float.Parse(textBox.Text);
编辑-有效的解决方案
float f1 = (float)double.Parse(textBox.Text)
请尝试以下操作:
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); }
}
}
您正在寻找的是
float.Parse()
或float.TryParse()
方法
float.Parse()
float.TryParse()。它比float.Parse()
安全得多,因为当解析成功时,它返回true
。这允许您检查字符串
是否为有效的浮点值
不幸的是,浮点字符串
可以使用
或,
编写,具体取决于您所处的区域性。确保为解析方法提供的区域性与应用程序中使用的区域性匹配。您可以从System.Globalization.CultureInfo.CurrentCulture
获得它。确保为输入设置正确的区域性,否则将失败
下面是一些示例代码:
float value;
if(!float.TryParse(textBox.Text, out value,
System.Globalization.CultureInfo.CurrentCulture))
{
MessageBox.Show("Wrong input!");
}
来源:我不认为使用float.Parse()有什么区别。试试这个:
Car.tires.front_value_mm = (float)Convert.ToDouble(textBox.Text, new NumberFormatInfo() { NumberDecimalSeparator = "," });
为什么它不起作用?错误消息是什么?什么是十进制分隔符,逗号还是点?分隔符是逗号,我得到System.FormatException:无效的输入字符串System.FormatException:无效的输入字符串在我的例子中,它应该看起来像Car.tires.front\u value\u mm=float.Parse(textBox.Text);在这种情况下有一个例外使用(float)double.Parse(textBox.Text)有帮助吗?我不能在TryParse中使用float value和后面的pt,在我的例子中,它应该是这样的:if(!float.TryParse(textBox.Text,out Auto1.tires.front_value_mm,System.Globalization.CultureInfo.CurrentCulture)){MessageBox.Show(“输入错误!”);}但它不起作用,因为无法将属性或索引器作为参数“out”或“ref”传递。您可能希望使用一个仅用于解析的浮点变量来保存该值,然后将其分配给属性。