int の容量を超えていないことが確実な場合は、完全に安全に実行できるはずです
int myInt = (int)Math.Ceiling(...);
境界がわからない場合は、 long
を使用できます int
の代わりに .
C++ の実践から、私は以下を使用します。天井が 99.99999...8 または 100.000000...1 を返す場合でも、正しい結果が得られることが保証されています
var result = (int)(Math.Ceiling(value) + 0.5);
以下のコードも、実装が信頼できる場合は機能するはずです
var result = Convert.ToInt32(value);
速度がすべてである場合、Int の入力と出力の Math.Ceiling は非常に低速です。最も速いのはインライン式です:
var ceilingResult = (value / divisor) + (value % divisor == 0 ? 0 : 1);
私自身の 1,000 万回の反復のベンチマークから、Math.Ceiling には約 2.4 秒かかりました。名前付き関数内でこの式を呼び出すには最大 380 ミリ秒かかり、直接インライン式として使用するには最大 33 ミリ秒かかります。
Int 入力と出力に Math.Floor が必要な場合は、さらに簡単です:
var floorResult = (value / divisor);