はい、いいえ。はい、抽象的な意味では無限大です(そして、以下で説明するように、ほとんどのコード浮動小数点数は、とにかく倍精度に変換されるためです)。
ただし、ビットレベルでは2つの無限大が異なるため、 Javaではdoubleが64ビット、floatはJavaでは32ビットなので、表現レベルでは多少異なります。
Javaでは、浮動小数点数(浮動小数点数と浮動小数点数)は、浮動小数点形式のIEEE 754を使用して表されています。これは、今日誰もがほとんど使用している標準です。各数値は、符号ビット、ある数の指数ビット、ある数の仮数(仮数)ビットを加えたものとして、2進数で表されます。 floatまたはdoubleのいずれかで正の無限大は符号ビットが0、指数ビットがすべて1、仮数ビットがすべて0です。負の無限大は符号ビットが1以外の場合と同じ方法で表されます。したがって無限大は2つの非常に似たような方法ですが、浮動小数点数と複素数の間の指数と仮数のビットの数が異なるため、ビットレベルパターンは異なります。
コードを書くために、コードを同じものとして扱うことができます。倍精度と浮動小数点を一緒に使用するときは、明示的にそうしない限り、浮動小数点は自動的にdoubleにキャストされ、式は倍精度になります。したがって、浮動小数点の無限大は最も実用的な目的で二重の無限大のように動作します。
に
float
をアップキャストした後double
でdouble
を比較します。 'Double.compare(double、double)'メソッドは、 'Double.compare(Float.POSITIVE_INFINITY、Double.POSITIVE_INFINITY)'に対して0を返すのに十分なほどスマート(あるいは多分ダム? – user113454@ user1064918これは 'Doubleとは関係ありません。'(double、double)'を比較します。私が私の答えで述べたように、doubleが期待され、floatが与えられると、floatは自動的にdoubleにキャストされるので、 'Double.compare(double、double)'は2倍しか見えません。 * JVMとハードウェア*は、32ビットの無限大(浮動小数点数)を認識し、64ビットの無限大(2倍)に変換するほどスマートです。 –
それは理にかなっています。ありがとうございました – user113454