`float`를 초기화 할 때`float`로 캐스팅하는 것과 접미사로`f`를 추가하는 것의 차이점은 무엇입니까?
차이점은 무엇입니까
float f = (float) 99.32 ;
과
float f = 99.32f ;
둘 다 성공적으로 컴파일되고 실행되었습니다.
float f = 99.32f ;
이것은 float
리터럴 입니다. 즉 , float
값이 직접 할당되는 부동 변수를 의미합니다 .
float f = (float) 99.32 ;
이는 float
할당 되기 전에 double
캐스트 되는 값 이 할당 된 변수입니다 float
.
차이는 최적화 될 수 있지만 첫 번째 경우에는 float로 형변환되는 이중 리터럴이 있고 두 번째 경우에는 float 리터럴이 있습니다.
최적화되지 않은 경우 두 번째 예제의 코드에서 typecast를 얻을 수 있습니다.
그러나 결과가 (라운딩 모드에 따라) 약간 다를 수있는 코너 케이스가 있습니다. 숫자를 정확하게 표현할 수없는 경우 첫 번째 경우에는 두 번 반올림됩니다. 먼저 소수점 표시를 double로 반올림 한 다음이를 부동 소수점으로 반올림 할 때, 첫 번째 경우에는 소수점 표시를 직접 반올림합니다. 플로트에.
캐스트 99.32
가 없는 첫 번째 경우 는 float가 아닌 double로 해석됩니다.
이중 리터럴이 부동으로 캐스팅됩니다.
두 번째 경우 f
에는 컴파일러 99.32
가 float로 처리되는지 확인 하는 접미사 가 있습니다.
줄 float f = (float) 99.32;
에서 리터럴 99.32
은 double
기본적으로 유형으로 생성 된 다음 float
.
라인에서 float f = 99.32f ;
리터럴은으로 만든 float
인해 후행에 유형 f
에 99.32f
더 타입 캐스팅이 필요하지 않습니다.
후자는 유형이 일치하는 유형의 변수에 직접 할당되므로 작성 double f = 99.32;
하는 것과 유사 double
합니다.
접미사가없는 부동 소수점 리터럴은 기본적으로 double
유형입니다.
따라서 float f = (float) 99.32;
먼저 a 에 유형 이있는 명시 적으로 리터럴 99.32
을 캐스트 한 다음 변수에 할당한다고 명시 합니다 .double
float
f
Stating float f = 99.32;
은 동일한 작업을 수행하지만이 경우 유형 간의 변환은 암시 적으로 수행됩니다.
당신이 암시 적 변환을 피하려면 당신이 사용해야 f
당신의 문자를 정의하는 접미사 (예 float f = 99.32f;
)
차이점은 리터럴 99.32
은 double 유형이고 리터럴 99.32f
은 float 유형이라는 것입니다.
첫 번째 문은 float 리터럴을 float 변수에 할당합니다. 특별한 것은 없습니다.
두 번째 문은 double 리터럴을 float로 캐스팅하고 그 결과를 float 변수에 할당합니다.
표준에 관한 한, 명시 적으로 직접 캐스팅하지 않고 double 리터럴을 float 변수에 할당 할 수 있습니다. 이 경우 암시 적 캐스트가 발생합니다. 예 :
float f = 99.32;
당신은 할 수 있습니다 :
float f = (double) 10.5f;
오른쪽은 여전히 암시 적으로 부동 소수점으로 변환됩니다.
대부분의 최신 컴파일러는이를 최적화하므로 float를 나타내는 것은 일반적으로 스타일과 선호도의 문제입니다. 일관성을 유지하십시오.
'development' 카테고리의 다른 글
gulp에서 파일을 복사 할 때 폴더 구조를 제거 할 수 있습니까? (0) | 2020.12.03 |
---|---|
SSH 세션에서 tmux를 자동으로 시작하는 방법은 무엇입니까? (0) | 2020.12.03 |
조건문에서 쉼표의 장점은 무엇입니까? (0) | 2020.12.03 |
참조로 파이썬 함수 호출 (0) | 2020.12.02 |
React에서 여러 줄 텍스트 문자열을 렌더링하는 방법 (0) | 2020.12.02 |