1

コード:

int TopAttuale = Int32.Parse("1579.998779296875");

それは言う

System.FormatException:入力文字列が正しい形式ではありませんでした。

しかし、それは私が持っているものです。その文字列をINTに変換するにはどうすればよいですか(つまり、1579、コンマは気にしません)?

4

7 に答える 7

9

行う:

(int) double.Parse(inputstring)
于 2012-08-28T10:20:18.857 に答える
5

最初に解析してから、decimalにキャストする必要があるようですint。(実際10進数の入力があるのdecimalではなく、使用します。ソースデータをより正確に表現します。ただし、キャストするときには違いはありません。)doubledecimal

// Parse using the invariant culture so that it always uses "." as the
// decimal separator
decimal parsed = decimal.Parse(text, CultureInfo.InvariantCulture);
int value = (int) parsed;

または、小数点があるかどうかを確認し、小数点がある場合は、その後のすべてをトリミングしてから、結果を解析します。

于 2012-08-28T10:20:47.760 に答える
5
decimal.ToInt32(decimal.Parse("1579.998779296875"))
于 2012-08-28T10:23:12.767 に答える
0

浮動小数点値を整数に変換しようとしていますが、これは直接不可能です。ただし、最初に文字列をdoubleに変換してから、doubleを整数に変換するよりも実行する必要がある場合。

       string str = "1579.998779296875";
        double val = Convert.ToDouble(str);
        int val1 = Convert.ToInt32(val);
于 2012-08-28T10:33:57.287 に答える
0

Decimal.Parseメソッドを試して、次の場所にキャストintます。

int TopAttuale = (int) Decimal.Parse(inputString)

または使用Decimal.TryParse方法:

string value;
decimal number;

value = "1579.998779296875";
if (Decimal.TryParse(value, out number))
   int result = (int) number;
else
   Console.WriteLine("Unable to parse '{0}'.", value);
于 2012-08-28T10:34:04.097 に答える
0

これは、小数点以下のすべてを単に無視します。文字列が数字ではなかったかどうかはわかりませんので、注意してください。

public int IntFromString(string str)
{
    int result = 0;

    foreach (char c in str)
    {
        if (!char.IsDigit(c))
        {
            break;
        }

        result = result * 10 + c - '0';
    }

    return result;
}
于 2012-08-28T10:36:34.770 に答える
0

このコードを試してください。

decimal a= decimal.Parse("1579.998779296875");
a=Math.Floor(a);
int b=(int)a;
Console.WriteLine(b);  
1579と表示されます。必要に応じて。

于 2012-08-28T10:53:05.563 に答える