Long.MAX_VALUE より大きい長い数値を取得するにはどうすればよいですか?
このメソッドが返すようにしたいtrue
:
boolean isBiggerThanMaxLong(long val) {
return (val > Long.MAX_VALUE);
}
Long.MAX_VALUE より大きい長い数値を取得するにはどうすればよいですか?
このメソッドが返すようにしたいtrue
:
boolean isBiggerThanMaxLong(long val) {
return (val > Long.MAX_VALUE);
}
そのメソッドは を返すことができませんtrue
。それがポイントですLong.MAX_VALUE
。その名前が...偽だったら、本当に混乱するでしょう。次に、それを呼び出すだけでLong.SOME_FAIRLY_LARGE_VALUE
、合理的な用途が文字通りゼロになるはずです。Android のisUserAGoat
を使用するか、常に を返す独自の関数をロールすることができますfalse
。
long
メモリ内の a は固定バイト数を取る ことに注意してください。オラクルから:
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
クラスを使用してください。
できません。呼び出されたメソッドがある場合、isBiggerThanMaxLong(long)
常に を返す必要がありfalse
ます。
のビットをインクリメントするとLong.MAX_VALUE
、次の値は になりますLong.MIN_VALUE
。2 の補数を読めば、その理由がわかります。
Long.MAX_VALUE
まず、以下のメソッドは戻り値の型がなく、代わりにある必要があるためコンパイルされませんLong.Max_value
。
public static boolean isBiggerThanMaxLong(long value) {
return value > Long.Max_value;
}
上記のメソッドは 、値を とtrue
比較しているため、決して戻ることはできません。そこでのみ渡すことができるメソッド シグネチャを参照してください。long
Long.MAX_VALUE
long
long
Long.MAX_VALUE
BigIntegerクラスで次のようなことを試すことができます。
public static boolean isBiggerThanMaxLong(BigInteger l){
return l.compareTo(BigInteger.valueOf(Long.MAX_VALUE))==1?true:false;
}
以下のコードは次を返しtrue
ます。
BigInteger big3 = BigInteger.valueOf(Long.MAX_VALUE).
add(BigInteger.valueOf(Long.MAX_VALUE));
System.out.println(isBiggerThanMaxLong(big3)); // prints true
が実際に長い場合triangle.lborderA
、元のコードのテストは自明に真であり、それをテストする方法はありません。それも無駄です。
ただし、triangle.lborderA
が double の場合、比較は有用であり、テストできます。isBiggerThanMaxLong(1e300)
true を返します。
public static boolean isBiggerThanMaxLong(double in){
return in > Long.MAX_VALUE;
}