web-dev-qa-db-ja.com

JavaのFloatの最大値は?

次の question は、Doubleの最小値が-Double.MAX_VALUE。これはフロートにも当てはまります(つまり、-Float.MAX_VALUE)?

22

はい、 -Float.MAX_VALUEは、大きさが最大の負の数です。 floatsはdoublesと同じ方法で表されますが、ストレージスペースの半分(およびそれに伴う精度の低下)だけがあります。IEEE754の符号は単一ビットで表されるため、そのビットの反転は残りのビットで達成可能な全体の大きさを変更しないでください。

26
dlev

はい-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
    }
}
18
Jon Skeet

編集:私の元の答えはひどく間違っているようです。これを指摘してくれて、@ 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

13
R.D. Alkire

はい、それはフロートにも当てはまります。

詳細については、こちらのマニュアルを確認してください http://download.Oracle.com/javase/7/docs/api/Java/lang/Float.html

はい、そして、あなたがリンクした質問の答えで述べられているのとまったく同じ理由で、FloatsとDoublesはIEEE754表現を使用します。

1
fvu