Long.MAX_VALUEより大きい長い数値を取得するにはどうすればよいですか?
このメソッドがtrue
を返すようにしたい:
boolean isBiggerThanMaxLong(long val) {
return (val > Long.MAX_VALUE);
}
そのメソッドはtrue
を返すことができません。それがLong.MAX_VALUE
のpointです。 really名前が... falseの場合、混乱するでしょう。そして、それはLong.SOME_FAIRLY_LARGE_VALUE
と呼ばれ、文字通り合理的な使用法はないはずです。 AndroidのisUserAGoat
を使用するか、常にfalse
を返す独自の関数をロールすることができます。
メモリ内のlong
は、固定バイト数を使用することに注意してください。 Oracleから :
long:longデータ型は、64ビットの符号付き2の補数整数です。最小値は-9,223,372,036,854,775,808で、最大値は9,223,372,036,854,775,807(両端を含む)です。 intが提供する値よりも広い範囲の値が必要な場合は、このデータ型を使用します。
基本的なコンピューターサイエンスまたは離散数学からわかるように、64ビットであるため、長い間2 ^ 64の可能な値があります。また、離散数学、数論、または常識からわかるように、可能性が有限である場合、そのうちの1つが最大でなければなりません。それはLong.MAX_VALUE
です。したがって、「0以上1未満の整数はありますか?」数学的に無意味です。
実際に何かのために実際にこれが必要な場合は、BigInteger
クラスを使用します。
できません。 isBiggerThanMaxLong(long)
というメソッドがある場合は、常にfalse
を返す必要があります。
Long.MAX_VALUE
のビットをインクリメントする場合、次の値はLong.MIN_VALUE
である必要があります。 2の補数を読むと、その理由がわかるはずです。
_triangle.lborderA
_が実際に長い場合、元のコードのテストは非常に真であり、テストする方法はありません。それも役に立たない。
ただし、_triangle.lborderA
_がdoubleの場合、比較は有用であり、テストできます。 isBiggerThanMaxLong(1e300)
はtrueを返します。
_ public static boolean isBiggerThanMaxLong(double in){
return in > Long.MAX_VALUE;
}
_