• μ€μλ 123.456κ³Ό κ°μ΄ μμμ μ κ°μ§ μμ΄λ€.
• μ€μλ λ§€μ° ν° μλ λ§€μ° μμ μλ₯Ό λ€λ£¨λ μμ° κ³Όνμ΄λ 곡ν λΆμΌμ νλ‘κ·Έλ¨μ μμ±ν λλ μμ΄μλ μ λ μ€μν μμμ΄λ€.
• Cμμλ λΆλμμμ λ°©μμΌλ‘ μ€μλ₯Ό νννλ€.
• λΆλμμμ μ μμμ μ μμΉκ° κ³ μ λΌ μμ§ μμΌλ©°, κ°μμ μ§μλ₯Ό μ¬μ©νμ¬ μ€μλ₯Ό νννλ€.
• κ°μλ μ ν¨μ«μ, μ§μλ μμμ μ μμΉλ₯Ό λνλΈλ€.
• Cμμλ float, double, long doubleμ 3κ°μ§μγ λΆλμμμ μλ£νμ΄ μλ€. PCμμλ doubleκ³Ό long doubleμ κ°λ€.
• μ£Όμ΄μ§ λΉνΈ μμμ μ§μμ κ°μλ₯Ό μ΄λ»κ² νννλλμ λν μ¬λ¬κ°μ§ κ·κ²©μ΄ μλ€. C μΈμ΄μ λΆλμμμ μ IEEE 754 κ·κ²©μ μ¬μ©νλ€(μμ C μ»΄νμΌλ¬ μ μΈ). μλ₯Ό λ€μ΄μ float νμ λ€μκ³Ό κ°μ IEEE 754 Single-Precision κ·κ²©μ μ¬μ©νλ€.
• floatλ 32λΉνΈ, doubleμ 64λΉνΈλ₯Ό μ¬μ©νλ€. floatλ μ½ 6κ°μ μ ν¨ μ«μ, doubleμ μ½ 16κ°μ μ ν¨ μ«μλ₯Ό κ°μ§ μ μλ€.
• λΆλμμμ νμ λΉνΈμ κ°μκ° μ νλμ΄ μμΌλ―λ‘ μμ£Ό μ ννκ² κ°μ μ μ₯νκΈ°κ° μ΄λ €μ΄ κ²½μ°κ° μλ€.
μ°Έκ³
μ ν¨ μ«μλ λ―Ώμ μ μλ μλ―Έ μλ μ«μλ₯Ό λ§νλ€. μλ₯Ό λ€μ΄μ 2,696μ μμ μ리μμ λ°μ¬λ¦Όνλ©΄ 2,700μ΄λ€. μ¬κΈ°μ 2μ 7μ μλ―Έμλ μ«μμ΄λ€. λ°λ©΄μ λ€μ λΆμ 00μ λ¨μν μλ¦Ώμλ₯Ό λνλ΄λλ° μ¬μ©λλ€. μ ν¨ μ«μμ κ°μλ μμμ μ μμΉμλ μκ΄μ΄ μλ€. 2,700μ 2.7e3μ΄λΌκ³ ννν΄λ μ ν¨ μ«μλ μμ 2κ°μ΄λ€.
μ°Έκ³
λΆλμμμ νμ μμμ μ μμΉκ° μμ§μΈλ€λ μλ―Έμμ λΆλμμμ μλΌκ³ νλ€.
λΆλμμμ μμ
• λΆλμμμ μμλ₯Ό νκΈ°νλ λ°©λ²μλ λ κ°μ§κ° μλ€.
1. μμμ νκΈ°λ²: μμμ μ μ΄μ©νμ¬ μ€μλ₯Ό νννλ λ°©λ².
2. μ§μ νκΈ°λ²: μ§μλ₯Ό μ΄μ©νμ¬ μ€μλ₯Ό νκΈ°νλ λ°©λ²
• μ¦ 12345.6μ 1,23456x10^4λ‘ νκΈ°κ° κ°λ₯νκ³ μ΄κ²μ Cμμλ 1.23456e4λ‘ νκΈ°νλ€. μ§μ λΆλΆμ Eλ eλ₯Ό μ¬μ©νμ¬ νμνλ€.
• μ£Όμν μ : μ μλΌκ³ νλλΌλ 2.0μ²λΌ λ€μ μμμ μ λΆμ΄λ©΄ μ΄κ²μ λΆλμμμ μμλ‘μ κ°μ£Όλμ΄ doubleνμ΄ λλ€.
• μ§μ νκΈ°λ²μ μ£Όλ‘ λ§€μ° ν° μλ μμ μλ₯Ό νκΈ°νλλ° μ μ©νλ€.
• λΆλμμμ μμλ κΈ°λ³Έμ μΌλ‘ doubleνμΌλ‘ κ°μ£Όλλ€.
• λ§μ½ doubleνμ΄ μλκ³ floatν μμλ₯Ό λ§λ€λ €λ©΄ μμ λμ fλ Fλ₯Ό λΆμ¬μ£Όλ©΄ λλ€.
3.141592F
• λ€μμ μ ν¨ν λΆλμμμ μμμ μμ΄λ€.
. // μμμ λ§ λΆμ¬λ λλ€.
.28 // μ μλΆκ° μμ΄λ λλ€.
9.26E3 // 9.26x10^3
0.67e-7 // 0.67x10^-7
νμ μ§μ μ
• floatνμ κ°μ μΆλ ₯νκ±°λ μ λ ₯νλ €λ©΄ νμ μ§μ μλ‘ "%d"λ₯Ό μ¬μ©νλ€.
• doubleνμ κ°μ μ μΆλ ₯νλ €λ©΄ "%lf"μ μ¬μ©νλ€. νΉν doubleνμ κ°μ μ λ ₯ν λ "%lf"μ μ¬μ©νμ§ μμΌλ©΄ κ°μ΄ μ΄μνκ² μ μ₯λλ€.
double radius;
printf("λ°μ§λ¦ κ°μ μ
λ ₯νμμ€.")
scanf("%lf", &radius); // λ°λμ "%lf"μ μ¬μ©νμ¬μΌ νλ€.
μμ #1
λ€μμ μμ λ μ ν¨ μ«μ κ°λ μ μμ보기 μνμ¬ λΆλμμμ μμλ₯Ό floatν λ³μμ doubleν λ³μμ 1234567890.12345678901234567890μ λμ νμ¬ λ³Έλ€.
#include <stdio.h>
int main(void)
{
float fvalue = 1234567890.12345678901234567890;
double dvalue = 1234567890.12345678901234567890;
printf("floatν λ³μ=%30.25f\n", fvalue);
printf("doubleν λ³μ=%30.25lf\n", dvalue);
return 0;
}
νλ‘κ·Έλ¨ μ€λͺ
floatνμ 6κ° μ λμ μ ν¨ μ«μλ₯Ό κ°μ§ μ μμΌλ―λ‘ 8λ²μ§Έ μλ¦ΏμλΆν°λ μ νν κ°μ΄ λμ€μ§ μλλ€. λ°λ©΄μ doubleνμ 15μ리 μ λμ μ ν¨ μ«μλ₯Ό κ°μ§μ νμΈν μ μλ€. νμ μ§μ μ % μμ λΆμ 30.25λ μ 체 μΆλ ₯ νλμ ν¬κΈ°λ₯Ό 30μΌλ‘ νκ³ μμ λΆλΆμ 25μλ¦¬λ‘ μΆλ ₯νλΌλ μλ―Έμ΄λ€. |
μ°Έκ³
λΆλμμμ νμ νκ³λ₯Ό μλ €μ£Όλ ν€λνμΌμ΄ μ‘΄μ¬νλ€. ν€λ νμΌ float.hμ μλ FLT_MINκ³Ό FLT_MAXλ floatλ‘ λνλΌ μ μλ κ°μ₯ μμ κ°κ³Ό κ°μ₯ ν° κ°μ μλ―Ένλ€.
λΉμ·νκ² doubleνμ λν΄μλ DBL_MINκ³Ό DBL_MAXκ° μ μλμ΄ μλ€.
Q floatκ°μ μ€μλ₯Ό intκ°μ μ μμ λ£μ κ²½μ°, μ΄λ€ μΌμ΄ λ°μνλκ°?
A μ»΄νμΌλ¬λ μ΄λ¬ν κ²½μ°μ κ²½κ³ λ₯Ό νλ€. μ€μ μ€μμ μμμ μ΄νλ μμ΄μ§κ³ μ μ λΆλΆλ§ μ μ λ³μμ λμ λλ€. 12.7μ΄λΌλ μ€μλ₯Ό μ μ λ³μμ λμ νλ©΄ 12λ§ λ¨λλ€.
μ€λ²νλ‘μ°μ μΈλνλ‘μ°
• μ€λ²νλ‘μ°(overflow): λ³μμ λμ λ μκ° λ무 컀μ λ³μκ° μ μ₯ν μ μλ μν©μ μλ―Ένλ€.
• floatν λ³μλ μ½ 1x10^38 μ΄μμ λλ μλ μ μ₯νμ§ λͺ»νλ€. μ΄λ³΄λ€ ν° κ°μ λμ νλ©΄ μ€λ²νλ‘μ°κ° λ°μν κ²μ΄λ€.
• μΈλνλ‘μ°(underflow): μ€λ²νλ‘μ°μ λ°λμ μν©. λΆλμμμ μ μκ° λ무 μμμ νννκΈ°κ° νλ μν©
#include <stdio.h>
int main(void)
{
float x = 1e39;
float y = 1.23456e-46;
printf("x=%e\n", x);
printf("y=%e\n", y);
return 0;
}
νλ‘κ·Έλ¨ μ€λͺ
(line 5) λΆλμμμ μ κ²½μ°, μ€λ²νλ‘μ°κ° λ°μνλ©΄ μ»΄νμΌλ¬λ ν΄λΉ λ³μμ 무νλλ₯Ό μλ―Ένλ νΉλ³ν κ°μ λμ νκ³ printf()λ μ΄ κ°μ infλΌκ³ μΆλ ₯νλ€.
(line 8, 9) μ€ν κ²°κ³Όλ₯Ό 보면 λ³μ yμ κ°μ μΈλνλ‘μ°κ° μΌμ΄λμ 0μΌλ‘ μΆλ ₯λμλ€. μμ μ§μ μ %eλ μ§μ νκΈ°λ²μΌλ‘ μΆλ ₯νλΌλ μλ―Έμ΄λ€.
λΆλμμμ νμ λΆμ νν μλ μλ€!
• λ€μμ μ½λλ₯Ό μ€νν΄λ³΄μ.
#include <stdio.h>
int main(void)
{
float value = 0.1;
printf("%.20f \n", value);
return 0;
}
• 0.1μ κ°μ΄ μ ννκ² μΆλ ₯λμ§ μλλ€. μ΄μ λ 무μμΌκΉ?
• μ΄μ§λ²μΌλ‘λ μ ννκ² λνλΌ μ μλ κ°λ€μ΄ μκΈ° λλ¬Έμ΄λ€. 0.1λ κ·Έ μ€μ νλμ΄λ€.
• μμ§λ²μΌλ‘ μλ₯Ό λ€μ΄λ³΄μ. μμ§λ²μμλ 1/3μ μ ννκ² λνλΌ μ μλ€.(0.3333...μ΄ λ¬΄νν λ°λ³΅λλ€.)
• μ΄μ§λ²μμλ 0.1μ΄ κ·Έλ λ€. μμ§λ²μμλ 0.1λ‘ μ ννκ² ννλμ§λ§, μ΄μ§λ²μμλ 0.1μ μ ννκ² νννλ κ²μ΄ λΆκ°λ₯νλ€.
• "0.000110011..."λ‘ μμλμ΄μ 무νν μ΄μ΄μ§λ€. λ¬Όλ‘ μ€κ°μμ λ°μ¬λ¦Όνλ©΄ μΌλ§λ μ§ μ€μ©μ μΌλ‘λ μ¬μ©μ΄ κ°λ₯νλ€.
'1νλ (2023) > C μΈμ΄' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[C] Study: λμ λ©λͺ¨λ¦¬ - (1) λμ ν λΉ λ©λͺ¨λ¦¬λ? (0) | 2023.08.19 |
---|---|
[C] Study: λ³μμ μλ£ν - (5) λ¬Έμν (0) | 2023.08.18 |
[C] Study: λ³μμ μλ£ν - (3) μ μν (0) | 2023.08.12 |
[C] Study: λ³μμ μλ£ν - (2) μλ£ν (0) | 2023.08.12 |
[C] math.h λΌμ΄λΈλ¬λ¦¬ (0) | 2023.07.16 |