2

文字列を float に変換する必要がありますが、通常のコンバーターだけが機能しません。

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 に答える