30

次の質問は、Doubleの最小値が。であることを示しています-Double.MAX_VALUE。これはFloat(つまり)にも当てはまり-Float.MAX_VALUEますか?

4

5 に答える 5

30

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

于 2011-08-15T22:19:54.390 に答える
18

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
    }
}
于 2011-08-15T22:22:05.440 に答える
15

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

于 2016-06-23T17:49:18.217 に答える
6

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

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

于 2011-08-15T22:21:13.860 に答える
1

はい、そうです。リンクした質問の回答に記載されているのとまったく同じ理由で、FloatsとDoublesは、保存方法が原因で「対称」であるIEEE754表現を使用します。

于 2011-08-15T22:24:39.887 に答える