programing

float에 캐스팅하는 것과 float를 초기화할 때 접미사로 f를 붙이는 것의 차이는 무엇인가.

luckcodes 2022. 8. 7. 18:15

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후행 때문에 타이핑하다f99.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.32type 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