2

我必须将字符串转换为浮点数,只有普通转换器不起作用。

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 它返回 0,0575958 并且 0.0001 也返回 1,所以它不是位移。

有谁知道为什么这个标准的 c# 转换不起作用?

所以我正在尝试编写自己的 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;
        }
4

2 回答 2

10

尝试fi.Resolution = float.Parse(nodeC.InnerText, CultureInfo.InvariantCulture);

看起来您当前的文化期望,作为小数分隔符并忽略任何.存在。

因此

0.01        =>    001     => 1
5.72958e-07 => 572958e-07 => 0,0572958 (note it gave you a , not a .)
于 2012-12-06T09:50:22.290 回答
1

您是否有机会使用默认为“,”作为小数分隔符的 Windows 语言环境?

还:

(float)nodeC.InnerText; 

永远不应该工作

于 2012-12-06T09:50:57.443 回答