ホームページ  >  記事  >  Java  >  Javaの基本型の自動変換の簡単な紹介

Javaの基本型の自動変換の簡単な紹介

巴扎黑
巴扎黑オリジナル
2017-08-01 11:33:431773ブラウズ

具体的な自動プロモーションのタイプは上の図に示すとおりです。このうち、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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。