次の質問は、Doubleの最小値が。であることを示しています-Double.MAX_VALUE
。これはFloat(つまり)にも当てはまり-Float.MAX_VALUE
ますか?
5 に答える
はい、-Float.MAX_VALUE
最大の大きさの負の数です。float
sはsと同じように表されますがdouble
、ストレージスペースの半分(およびそれに伴う精度の低下)があります。IEEE754の符号は単一のビットで表されるため、そのビットを反転しても、残りのビットで達成可能な全体的な大きさは変わりません。ビット。
Float.MAX_VALUE
はい-それは符号ビットが反転していることを除いて同じビットパターンです...そしてそれは値を取得する別の方法です:
public class Test {
public static void main(String[] args) {
// Float.MAX_VALUE is intBitsToFloat(0x7f7fffff)
// so we set the most significant bit - the sign bit
float f = Float.intBitsToFloat((int) 0xff7fffff);
System.out.println(f == -Float.MAX_VALUE); // true
}
}
編集:私の元の答えはひどく間違っているようです。これを指摘してくれてありがとう@aioobe。
代わりに、Javaコードの魔法を使用して、タイトルの質問に答えます。
System.out.printf( "Float.MAX_VALUE: %,f\n", Float.MAX_VALUE );
Float.MAX_VALUE:340,282,346,638,528,860,000,000,000,000,000,000,000.000000
System.out.printf("in scientific notation: %.18g\n", Float.MAX_VALUE );
科学的記数法で:3.40282346638528860e + 38
System.out.printf(
"in hexadecimal floating-point number with a significand and "
+ "an exponent: %a", Float.MAX_VALUE );
仮数と指数を含む16進浮動小数点数:0x1.fffffep127
はい、それはフロートにも当てはまります。
詳細については、こちらのマニュアルを確認してくださいhttp://download.oracle.com/javase/7/docs/api/java/lang/Float.html
はい、そうです。リンクした質問の回答に記載されているのとまったく同じ理由で、FloatsとDoublesは、保存方法が原因で「対称」であるIEEE754表現を使用します。