web-dev-qa-db-ja.com

C#でフロートを最も近いintに切り上げるにはどうすればよいですか?

C#では、フロートを最も近い整数に丸めるにはどうすればよいですか?

Math.CeilingとMath.Roundが表示されますが、これらは小数を返します。これらのいずれかを使用してからIntにキャストしますか?

54
Axajian

nearest intに丸める場合:

_int rounded = (int)Math.Round(precise, 0);
_

以下も使用できます。

_int rounded = Convert.ToInt32(precise);
_

Math.Round(x, 0);を使用して、丸めてキャストします。見た目はすっきりしていますが、IMOはやや不明瞭です。


丸める場合p

_int roundedUp = (int)Math.Ceiling(precise);
_
125
Matt Brindley

私の頭の上から:

float fl = 0.678;
int rounded_f = (int)(fl+0.5f);
13

(int)Math.Round(myNumber、0)

3
joshcomley

最も簡単なのは、単に0.5fそれから、これをintにキャストします。

3
JulianR

これらのいずれかを使用してからIntにキャストしますか?

はい。問題はありません。 10進数とdoubleは整数を正確に表すことができるため、表現エラーはありません。 (たとえば、Roundが5ではなく4.999 ...を返すケースは取得できません。)

1
dan-gph

Intの範囲内(Int32.MinValueからInt32.MaxValue)にあることが確実であれば、intにキャストできます。

0
Joe