float에 캐스팅하는 것과 float를 초기화할 때 접미사로 f를 붙이는 것의 차이는 무엇인가.
와의 차이는 무엇입니까?
float f = (float) 99.32 ;
그리고.
float f = 99.32f ;
둘 다 컴파일 및 실행에 성공했습니다.
float f = 99.32f ;
그거는float
리터럴. 즉, float 변수가 할당되어 있는 것을 의미합니다.float
직접 평가합니다.
float f = (float) 99.32 ;
그거는float
할당된 변수double
주어지는 가치float
할당되기 전에.
차이는 최적화될 수 있지만 첫 번째 경우에는 플로트에 입력되는 이중 리터럴이 있고 두 번째 경우에는 플로트 리터럴이 있습니다.
최적화되지 않은 경우 두 번째 예에서는 코드로 타입캐스트를 얻을 수 있습니다.
그러나 (반올림 모드에 따라) 결과가 약간 다를 수 있는 코너 케이스가 있습니다.숫자를 정확하게 표현할 수 없는 경우 첫 번째 경우 소수점 표현을 2배로 반올림한 후 반올림한 후 부동으로 반올림한 후 첫 번째 경우 소수점 표현을 직접 부동으로 반올림합니다.
출연자가 없는 첫 번째 경우99.32
플로트가 아닌 이중으로 해석됩니다.
더블 리터럴이 뜨기 위해 주조되고 있다.
두 번째 경우 접미사가 있습니다.f
컴파일러가 확실하게 처리하도록 하기 위해99.32
플로트로
줄을 서서.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;
당신은 먼저 문자 그대로를 캐스팅합니다.99.32
종류로 되어 있다double
에 대해서float
변수에 할당합니다.f
.
말하는float f = 99.32;
는 같은 작업을 수행하지만 이 경우 유형 간 변환은 암묵적으로 수행됩니다.
암묵적인 변환을 회피하려면f
서픽스를 사용하여 리터럴을 정의합니다(예:float f = 99.32f;
)
차이점은 리터럴이99.32
type double인 반면, 리터럴은99.32f
플로트 타입입니다.
첫 번째 문은 float 리터럴을 float 변수에 할당합니다.별 다른 것 없어.
두 번째 문은 이중 리터럴을 플로트에 캐스팅하고 결과를 플로트 변수에 할당합니다.
표준에 관한 한 플로트 변수에 명시적으로 캐스팅하지 않고 이중 리터럴을 할당할 수 있습니다.이 경우 암묵적인 캐스트가 발생합니다.예:
float f = 99.32;
다음 작업도 가능합니다.
float f = (double) 10.5f;
그리고 오른쪽은 여전히 암묵적으로 플로트로 변환됩니다.
최신 컴파일러의 대부분은 이러한 컴파일러를 최적화하기 때문에 플로트를 표시하는 것은 보통 스타일과 선호도에 따라 달라집니다.그냥 일관성을 유지하세요.
언급URL : https://stackoverflow.com/questions/33163772/what-is-the-difference-between-casting-to-float-and-adding-f-as-a-suffix-whe
'programing' 카테고리의 다른 글
C에서 .h 파일의 비정상적인 사용 (0) | 2022.08.07 |
---|---|
vuex mapState는 namesched:false인 경우에도 모듈 이름을 항상 인수로 요구합니다. (0) | 2022.08.07 |
Vue 속성 정의 주의(인스턴스 (0) | 2022.08.07 |
Array List를 문자열로 변환하는 가장 좋은 방법 (0) | 2022.08.07 |
어떻게 하면 2개의 int를 나누면 다른 int가 아닌 float가 생성됩니까? (0) | 2022.08.07 |