2012-03-21 16 views

答えて

37

整数型にキャストし、Math.Floorを使用していくつかの違いがあります。

  1. 整数型にキャストすると、あなたは終了しますが、一体型の(明らかに)一体型である。だから、もしあなたが倍数として数字を保持したいなら、Floorを使う方が簡単です。
  2. 与えられた整数が指定された整数型で表現するには大きすぎる場合、キャストは正しく動作しません(倍精度はlongよりもはるかに大きい数値を表す可能性があります)。
  3. フロアラウンドが負の無限大方向に丸められます。キャスティングはゼロに向かってラウンドします。他の回答に加えて
11

Math.Floorそれは違った負の数を処理するための切り捨てとは根本的に異なる操作です。 Math.Floor(-1.5) == -2.0であり、​​である。

19

それが負の値のために異なります

double num = -1.3; 
double floor = Math.Floor(num); // = -2 
long cast = (long)num; // = -1 
7

Floorが成功する場所というキャストが失敗する可能性がありますことを忘れないでください:

decimal d = decimal.MaxValue; 

decimal f = Math.Floor(d); // succeeds 
long l = (long)d;    // fails 
1

あなたは正の値のみを扱っている場合でも、double値がありませんlongには常に入ります。

MSDNのlongおよびdoubleの範囲を参照してください。

+3

これは真ですが、 'Floor'関数は' long'に収まらない値には何の影響も与えません。 – Gabe