c#字符串到浮点转换不';我工作不正常

c#字符串到浮点转换不';我工作不正常,c#,string,floating-point,converter,C#,String,Floating Point,Converter,我必须将字符串转换为浮点,只有普通的转换器不能工作 fi.Resolution = float.Parse(nodeC.InnerText); fi.Resolution = (float)nodeC.InnerText; fi.Resolution = Single.Parse(nodeC.InnerText); 而且这些方法中有很多都不起作用。 当nodeC.InnerText为0.01时,返回1, 但如果nodeC.InnerText为5.72958e-07,则返回00575958 0

我必须将字符串转换为浮点,只有普通的转换器不能工作

fi.Resolution = float.Parse(nodeC.InnerText);
fi.Resolution = (float)nodeC.InnerText; 
fi.Resolution = Single.Parse(nodeC.InnerText);
而且这些方法中有很多都不起作用。 当nodeC.InnerText为0.01时,返回1, 但如果nodeC.InnerText为5.72958e-07,则返回00575958 0.0001也返回1,所以它不是位移位

有人知道为什么这个标准的c#conversions不起作用吗

所以我试图编写自己的StringToFloat方法,但失败了:p

public float StringToFloat(string input)
        {
            float output = 0;
            char[] arr = input.ToCharArray();

            for (int i = 0; i < input.Length - 1; i++)
            {
                if (arr[i].Equals("."))
                    output += 1;//change
                else
                    output += Convert.ToInt32(arr[i]);
            }

            return output;
        }
public float StringToFloat(字符串输入)
{
浮点输出=0;
char[]arr=input.ToCharArray();
for(int i=0;i
尝试
fi.Resolution=float.Parse(nodeC.InnerText,CultureInfo.InvariantCulture)

看起来您当前的区域性要求将
作为十进制分隔符,并忽略任何存在的

因此


您是否使用默认为“,”的Windows区域设置作为小数分隔符

此外:


永远不要工作

你在使用什么文化?看起来,
Parse
将小数点视为逗号。您不应该这样做,因为
(float)
正在尝试从
string
转换为
float
,这不是有效的转换。您需要解析或转换字符串。这是一种魔力,但对我来说,如果我使用文化中指定的分隔符以外的其他分隔符,我会遇到异常。所以我认为他的问题不在于文化,但这是第一件要检查的事情。
0.01        =>    001     => 1
5.72958e-07 => 572958e-07 => 0,0572958 (note it gave you a , not a .)
(float)nodeC.InnerText;