1. ホーム
  2. java

[解決済み] Long.MAX_VALUEより大きいロング

2022-03-04 17:44:45

質問

Long.MAX_VALUEより大きな数値を取得するにはどうすればよいですか?

このメソッドが返す true :

boolean isBiggerThanMaxLong(long val) {
    return (val > Long.MAX_VALUE);
}

解決方法は?

そのメソッドは true . それは ポイント Long.MAX_VALUE . それは、次のようになります。 本当に もし、その名前が...falseだったら、混乱しますよね。 それなら、単に Long.SOME_FAIRLY_LARGE_VALUE といった、文字通り合理的な使い方はゼロです。 ただ Androidの isUserAGoat を常に返すような独自の関数を作成することもできます。 false .

ただし long は一定のバイト数を必要とします。 オラクルから :

longです。long データ型は 64 ビットの符号付き 2 の補数整数である。最小値は-9,223,372,036,854,775,808、最大値は9,223,372,036,854,775,807(いずれも内数)である。このデータ型は、int型よりも広い値の範囲が必要な場合に使用します。

コンピュータサイエンスや離散数学の基礎で知っているかもしれませんが、longは64ビットなので、2^64個の値が可能です。 そして、離散数学や整数論、あるいは常識で知っているように、有限個の可能性しかない場合、そのうちの1つが最大でなければならない。 ということになります。 Long.MAX_VALUE . つまり、「0と1の整数はあるか」という質問と同じで、数学的には無意味なのです。

もし、実際にこれが必要な場合は、次のようにします。 BigInteger クラスがあります。