2

非常にばかげた問題があります..""(引用符なし)を含む文字列があり800.0000、数値800に変換しようとしています。このコマンドを使用していますが、機能しません。

int inputNumber = Int32.Parse(inputString);

「入力文字列が正しい形式ではありませんでした」というメッセージとともに、FormatExceptionが発生します。

4

6 に答える 6

11

これを試して:

int inputNumber = Int32.Parse(inputString, NumberStyles.AllowDecimalPoint);
于 2012-05-21T13:31:13.367 に答える
3

800.000

タイプDoubleではなく、Integer

それで、

double inputNumber = Double.Parse(inputString);

あなたのために働きます。

于 2012-05-21T13:31:50.187 に答える
1

stringがないため、例外が発生しますint32double最初に変換する必要があります。

double value = Convert.ToDouble(youString);
于 2012-05-21T13:32:28.087 に答える
1

これを試して:

double myDouble = Convert.ToDouble(string);

他のタイプでも同様に機能しますが、

int myInt = Convert.ToInteger(string);
于 2012-05-21T13:34:32.523 に答える
1

float小数を含む数値を渡すため、適切なターゲット タイプを使用する必要があります。double

だからそれはあなたを与える

var value = Double.Parse(s);

次のように小数を取り除くことができます。

var integer = (int)value;

ただし、 を使用してもDouble.Parse、現在のカルチャに基づいて異なる入力が期待されるため、注意が必要です ( System.Globalization.CultureInfo.CurrentCulture)。

そうしているうちに

Double.Parse("800.00", System.Globalization.CultureInfo.GetCultureInfo("en-US"))

期待どおりに動作します

Double.Parse("800.00", System.Globalization.CultureInfo.GetCultureInfo("de-DE"))

値「80000」を生成します

EDIT1 - 追加:

だからあなたは使いたいかもしれません

Double.Parse("800.00", System.Globalization.CultureInfo.InvariantCulture)

あらゆる種類のトラブルにつながる可能性のある誤解を防ぐために。

于 2012-05-21T13:47:18.207 に答える
0

Int32 valueInInt = (int)double.Parse(inputString);

于 2013-07-04T05:33:36.877 に答える