1. ホーム
  2. c#

[解決済み] C#でdoubleをintに変換する方法

2022-03-04 06:18:53

質問

このコードでは、doubleをintに変換する必要があります。

double score = 8.6;
int i1 = Convert.ToInt32(score);
int i2 = (int)score;

なぜ i1 != i2 ?

という結果が出る。 i1 = 9i2 = 8 .

解決方法は?

なぜなら Convert.ToInt32 を丸めたものです。

戻り値:最も近い32ビット符号付き整数に丸められた値。もし値 が2つの整数の中間にある場合、偶数が返されます。 すなわち、4.5は4に、5.5は6に変換される。

...一方、キャストは 切り捨てる :

doubleやfloatの値を積分型に変換した場合、その値は の値は切り捨てられます。

更新しました。 その他の違いについては、以下の Jeppe Stig Nielsen さんのコメントを参照してください(ただし、この違いは score は今回のように実数です)。