1. ホーム
  2. c#

[解決済み] Math.Floor(Double)はなぜDouble型の値を返すのですか?

2022-05-17 08:57:58

質問

10進数や2進数から、左辺の整数値を取得したい。例:4.6から4を取得する必要があります。Math.Floor関数を使用してみましたが、double値が返されます、例えば:4.6から4.0が返されます。MSDNドキュメントには、整数値を返すと書いてあります。私はここで何かを見逃しているのでしょうか?または、私が探しているものを達成するための別の方法がありますか?

どのように解決するのですか?

の範囲は double の範囲よりはるかに広いです。 int または long . このコードを考えてみましょう。

double d = 100000000000000000000d;
long x = Math.Floor(d); // Invalid in reality

の範囲外の整数です。 long - ということで、どうなるでしょうか?

通常、あなたはこの値が 実際に の範囲内にある。 int または long というように、キャストするのです。

double d = 1000.1234d;
int x = (int) Math.Floor(d);

のような、より高度なキャスティングが必要ですが、その責任は開発者が負うものであって Math.Floor そのものではありません。の範囲外のすべての値に対して例外を発生させるだけでは、不必要に制限されることになります。 long .