Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用文本框将字符串值转换为浮点值_C#_String_Textbox_Floating Point_Type Conversion - Fatal编程技术网

C# 使用文本框将字符串值转换为浮点值

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

我正在使用Newtonsoft将对象序列化为json。 其中一个应该被填充的字段是一个包含数值的字段——一个浮点值。当我在我的项目中创建一个car对象时,我在构造函数中使用了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);
试用

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”传递。您可能希望使用一个仅用于解析的浮点变量来保存该值,然后将其分配给属性。