2011-08-15 10 views
15

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

+1

あなたは-Float.MAX_VALUEを意味しますか? – dckrooney

+1

[this](http://download.oracle.com/javase/6/docs/api/java/lang/Float.html#MIN_VALUE)が本当でないのはなぜですか? – CoolBeans

+1

@CoolBeansはリンクされた質問を読む。彼は「最大の大きさを持つ負の数」について話しています。 – dlev

答えて

20

はい、-Float.MAX_VALUEは、最大の大きさを持つ負の数です。 floatは、doubleと同じ方法で表され、記憶スペースの半分(およびそれに伴う精度の低下)だけで表されます。IEEE 754の符号は単一のビットで表されているため、そのビットを反転しても、残りのビット。

15

はいを​​チェック詳細については

- それは反転し、符号ビット...を除いて 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 
    } 
} 
1

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

7

編集:私の元の答えは間違っているようです。これを指摘してくれてありがとう@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進浮動小数点数でignificandと指数:0x1.fffffep127

関連する問題