구체적인 자동 프로모션 유형은 위 그림과 같습니다. 그 중, long->float 변환은 처음에는 조금 문제가 있다는 느낌을 받았습니다. 왜냐하면 long은 64비트인데 float는 32비트이기 때문입니다.
그래서 답을 찾으려면 블로그의 Java에서 long을 float로 자동 변환하여 발생한 살인 사건을 참조하세요.
우선, 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)이 어떻게 십진수를 나타내는지 알고 싶습니다(대학에서 컴퓨터 구성 원리 과정에서 배웠지만 잊어버렸습니다. 지금 공부해서 기억할 수 있기를 바랍니다).
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!