>  기사  >  Java  >  Java 기본 유형의 자동 변환에 대한 간략한 소개

Java 기본 유형의 자동 변환에 대한 간략한 소개

巴扎黑
巴扎黑원래의
2017-08-01 11:33:431704검색

구체적인 자동 프로모션 유형은 위 그림과 같습니다. 그 중, long->float 변환은 처음에는 조금 문제가 있다는 느낌을 받았습니다. 왜냐하면 long은 64비트인데 float는 32비트이기 때문입니다.

그래서 답을 찾으려면 블로그의 Java에서 long을 float로 자동 변환하여 발생한 살인 사건을 참조하세요.

Reason

우선, float가 나타낼 수 있는 숫자의 범위가 long보다 크다는 점을 알아야 합니다. 따라서 long 유형의 숫자를 float 유형으로 변환할 수 있다고 생각됩니다.

  긴 유형, 값 범위는 -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 유형 표현 방법을 사용하여 표현할 수 있습니다. 그러나 float에는 정밀도 제한이 있으므로 변환 프로세스 중에 정밀도가 손실될 수 있습니다.

예: 3111111111111111L ---->3.1111111E15---->3111111100465152, 변환 후 정밀도가 손실됩니다.

두 번째로 필요합니다. 32비트 부동소수점(float)이 어떻게 십진수를 나타내는지 알고 싶습니다(대학에서 컴퓨터 구성 원리 과정에서 배웠지만 잊어버렸습니다. 지금 공부해서 기억할 수 있기를 바랍니다).

float 메모리 저장 원리

http://steve.hollasch.net/cgindex/coding/ieeefloat.html (IEEE754 표준)

(1) Base 10에서 123.456은 1.23456 × 10 2로 표현 가능 , 이진수로 10100.110은 1.0100110 × 24

로 표현할 수 있습니다. (2) 부동 소수점 숫자는 정밀도를 가지며, 정밀도를 초과하는 숫자는 표현할 수 없습니다. 예를 들어 0.0000000000000001은 소수점 이하 x자리까지 정확합니다.

(3) IEEE 부동 소수점 숫자는 부호 비트(S), 지수 비트(E), 꼬리(M)의 세 부분으로 구성됩니다. 모든 숫자는 S*1.M*2E로 이진수로 표현될 수 있습니다.

表示形式如下:
Single:

(4) 요약: float의 표현 범위는

입니다.

위 내용은 Java 기본 유형의 자동 변환에 대한 간략한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.