非常にばかげた問題があります..""(引用符なし)を含む文字列があり800.0000
、数値800に変換しようとしています。このコマンドを使用していますが、機能しません。
int inputNumber = Int32.Parse(inputString);
「入力文字列が正しい形式ではありませんでした」というメッセージとともに、FormatExceptionが発生します。
非常にばかげた問題があります..""(引用符なし)を含む文字列があり800.0000
、数値800に変換しようとしています。このコマンドを使用していますが、機能しません。
int inputNumber = Int32.Parse(inputString);
「入力文字列が正しい形式ではありませんでした」というメッセージとともに、FormatExceptionが発生します。
これを試して:
int inputNumber = Int32.Parse(inputString, NumberStyles.AllowDecimalPoint);
800.000
タイプDouble
ではなく、Integer
それで、
double inputNumber = Double.Parse(inputString);
あなたのために働きます。
string
がないため、例外が発生しますint32
。double
最初に変換する必要があります。
double value = Convert.ToDouble(youString);
これを試して:
double myDouble = Convert.ToDouble(string);
他のタイプでも同様に機能しますが、
int myInt = Convert.ToInteger(string);
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)
あらゆる種類のトラブルにつながる可能性のある誤解を防ぐために。
Int32 valueInInt = (int)double.Parse(inputString);