web-dev-qa-db-ja.com

doubleをintに切り上げる

Int/int(10/3など)の数値( "double")があります。

過剰近似でC#をintに変換する最良の方法は何ですか?

21
markzzz

System.Math.Ceiling について質問していますか?

Math.Ceiling(0.2) == 1
Math.Ceiling(0.8) == 1
Math.Ceiling(2.6) == 3
Math.Ceiling(-1.4) == -1
66
Doug McClean
int scaled = (int)Math.Ceiling( (double) 10 / 3 ) ;
9
EursPravus

「Excessation by Excess」によって、double型の数を「切り上げ」ようとしていると思います。したがって、@ Doug McCleanの「天井」メソッドは問題なく機能します。

ここに注記があります:double x = 0.8;で開始し、(int)x;による型変換を行うと、0が得られます。または、(int)Math.Round(x);を実行すると、1を取得します。 double y = 0.4;で開始し、(int)y;による型変換を行うと、0が得られます。または、(int)Math.Round(y);を実行すると、0を取得します。

1
Ren Wang

2.42を考えると、それは242/100と言うことができ、121/50に簡略化できます。

0
mrbm