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;