float または double 値にフロア関数を適用して整数を取得する方法。関数から double Value:4.4497083717E10 float Value:4.4497084E10 を得ました。 floor が整数になる可能性はありますか??
4424 次
2 に答える
4
.floorが整数になる可能性はありますか?
タイプの観点から-いいえ。 Math.floor
はを返すように宣言されているdouble
ため、静的タイプが。であるものを返すことはありませんint
。
とはいえ、メソッドのドキュメントでは、戻り値が整数に等しいと宣言されています。したがって、返された結果をにキャストするだけで、int
常に期待どおりの出力が得られます。
(つまり、結果が範囲内にあると仮定します。Aは、が表すことができるdouble
より大きな数値を保持できます。技術的な詳細については、プリミティブ変換の絞り込みを確認してください。境界を確認して、データをチェックして、変換が常に適切であることを確認してください。)int
int
于 2012-04-20T09:42:21.677 に答える
1
4.4497083717E10 は にするには大きすぎるため、int
にキャストする必要がありますlong
。
Math.floor
long にキャストすると、double の全体が保持され、long として表現できる値と同じになります。すなわち
long l = (long) Math.floor(4.4497083717E10);
と同じです
long l = (long) 4.4497083717E10;
System.out.println((int) Math.floor(4.4497083717E10));
System.out.println((long) Math.floor(4.4497083717E10));
System.out.println((long) 4.4497083717E10);
版画
2147483647 -- due to an overflow
44497083717
44497083717
于 2012-04-20T11:11:02.557 に答える