floating_literal — 부동 소수점 리터럴
floating_literal — 부동 소수점 리터럴 (Floating-point literal)
**부동 소수점 리터럴(floating-point literal)**은 소스 파일에서 값을 지정한 컴파일 타임 상수를 정의해요. 즉 double(또는 float) 값을 코드에 직접 적는 문법이에요.
3.14, 1e10, 0x1.fp3 같은 형태가 부동 소수점 리터럴이에요.
출처: cppreference
본문
문법 (Syntax)
digit-sequence decimal-exponent suffix // (1)
digit-sequence . decimal-exponent suffix // (2)
digit-sequence . digit-sequence decimal-exponent suffix // (3)
0x | 0X hex-digit-sequence hex-exponent suffix // (4)
0x | 0X hex-digit-sequence . hex-exponent suffix // (5)
0x | 0X hex-digit-sequence . hex-digit-sequence hex-exponent suffix // (6)
- (1) 소수점 없는 정수를 나타내는 자릿수 시퀀스. 이 경우 지수는 선택이 아니에요:
1e10 - (2) 소수점 바로 뒤에 소수 부분이 없는 형태:
1. - (3) 정수 부분과 소수 부분이 모두 있는 일반 형태:
1.5 - (4)~(6) 16진수 부동 소수점 리터럴:
0x1.fp3등
1e10 // double 10000000000.0
3.14 // double
0x1.fp3 // 16진: (1 + 15/16) * 2^3 = 15.5
**지수(decimal exponent)**는 e 또는 E 뒤에 (선택적으로 부호를 가진) 소수 자릿수를 붙인 형태이고, 값을 10의 거듭제곱으로 곱해요. 1e3은 1000.0이에요.
**16진 지수(hex exponent)**는 p 또는 P 뒤에 (선택적으로 부호를 가진) 소수 자릿수를 붙인 형태이고, 값을 2의 거듭제곱으로 곱해요. 0x1p4는 16.0이에요. 16진 리터럴에서는 p 지수가 필수예요.
**suffix(접미사)**로 타입을 지정해요.
| 접미사 | 타입 |
|---|---|
| (없음) | double |
f / F |
float |
l / L |
long double |
float f = 1.5f; // float
double d = 3.14; // double
long double ld = 2.5L; // long double
부동 소수점 리터럴은 기본적으로 double이므로, float 변수에 넣을 때는 f 접미사를 붙여 의도를 명확히 하는 것이 좋아요.