2009-05-25 12 views
44

C#では、floatを最も近いintに丸める方法を教えてください。浮動小数点数をC#で最も近い整数に丸める方法はありますか?

Math.CeilingとMath.Roundが表示されますが、これらは10進数を返します。これらのうちの1つを使用してIntにキャストしますか?私の頭の上オフ

+0

フルスキャンを行うにはhttp://stackoverflow.com/questions/14/whats-the-difference-between-math-floor-and-math-truncate-in-netを参照してください。 – paxdiablo

答えて

103

あなたは最寄り int型に丸めたい場合:

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

次のものも使用できます。

int rounded = Convert.ToInt32(precise); 

Math.Round(x, 0);を使用してラウンドしてキャストします。それはきれいに見えるが、やや明確なIMOである。


あなたは次第を四捨五入したい場合:

int roundedUp = (int)Math.Ceiling(precise); 
+9

質問にあいまいさがあります。彼は最も近いintを望んでいると主張しているが、タイトルは丸めたいと提案している。これらは2つの異なるものです。 – mmcdole

+0

彼は切り上げたかった。それは(int)数学ではありませんか? – configurator

+0

@ configurator、そうです、それは私が考えていることです。 – mmcdole

3

(int型)恐らくMath.round(myNumber、0)

9

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

最後にf(0.5f)を説明するのに気をつけますか? –

+4

intへのfloatキャストは+0.5を切り捨てて、最も近いintへのキャストを保証します。しかし、これは正の浮動小数点に対してのみ機能します。 –

1

私はこれらのいずれかを使用していますが、その後のIntにキャスト?

はい。それをすることは問題ありません。小数点以下2桁は整数を正確に表すことができるため、表現上の誤りはありません。 (例えば、Roundは4.999の代わりに5を返します)

2

最も簡単なのは、0.5fを追加してintにキャストするだけです。

0

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

関連する問題