具体的な自動プロモーションのタイプは上の図に示すとおりです。このうち、long→floatの変換は、longは64ビットですが、floatは32ビットなので、最初は少し問題を感じました。
その答えを見つけるには、ブログ内のJavaのlongからfloatへの自動変換によって引き起こされた殺人事件を参照してください。
まず、float が表現できる数値の範囲は、long よりも大きいことを知っておく必要があります。そのため、long 型の数値は float 型に変換できると考えられます。
Long型、値の範囲は-9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807 (-263) ~ 263 -1)
Float型、値の範囲は2^(-149) ---> (2-2^(-23))*2^127、つまりFloat.MIN_VALUEです。 Float.MAX_VALUE
float 型の表現方法を使用すると、任意の long 型の数値を表現できます。ただし、float には精度制限があるため、変換プロセス中に精度が失われる可能性があります。
3111111111111111L ---->3.1111111E15---->3111111100465152 など、変換後に精度は失われます
次に、 32 ビットの浮動小数点数が小数をどのように表現するかを知るためです (大学のコンピュータ構成原理のコースで学びましたが、忘れてしまいました。今から勉強して、覚えられるといいのですが)。
http://steve.hollasch.net/cgindex/coding/ieeefloat.html (IEEE754規格)
(1) 10進法では、123.456は1.23456×102と表現できます。 、2進数では、10100.110は1.0100110×24
と表現できます。 (2) 浮動小数点数には精度があり、その精度を超える数値は表現できません。たとえば、0.0000000000000001は小数点以下x桁まで正確です。
(3) IEEE 浮動小数点数は、符号ビット (S)、指数ビット (E)、および末尾 (M) の 3 つの部分で構成されており、任意の数値は 2 進数で S*1.M*2E として表現できます。
表示形式如下: Single:
(4) 概要: float の表現範囲は
以上がJavaの基本型の自動変換の簡単な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。