C Set Decimal Precision
đ§ What does âSet Decimal Precisionâ mean?Âļ
đ āϧāϰā§āύ āĻāĻĒāύāĻŋ āĻāĻāĻāĻž āĻāĻā§āύāĻžāĻāĻļ āϰāĻžāĻāĻā§āύ:
āĻāĻāύ āĻāĻĒāύāĻŋ āĻāĻžāĻā§āĻā§āύ āĻļā§āϧ⧠⧍ āĻāϰ (3.14) āĻ āĻĨāĻŦāĻž ā§Ē āĻāϰ (3.1416) āĻĒāϰā§āϝāύā§āϤ āĻĻā§āĻāĻžāϤā§āĨ¤
āĻāĻ āĻĻā§āĻāĻžāύā§āϰ āύāĻŋā§āύā§āϤā§āϰāĻŖāĻāĻžāĻā§āĻ āĻŦāϞā§:
â âSetting Decimal Precisionâ
āĻŽāĻžāύ⧠āĻšāĻā§āĻā§ āĻĻāĻļāĻŽāĻŋāĻā§āϰ āĻĒāϰ⧠āĻāϤ digit āĻĻā§āĻāĻžāĻŦā§, āϏā§āĻāĻž āĻ āĻŋāĻ āĻāϰāĻžāĨ¤
đ C āϤ⧠Decimal Precision āĻāĻŋāĻāĻžāĻŦā§ set āĻāϰāĻž āĻšā§?Âļ
đ¯ āĻāϤā§āϤāϰ: %0.*f, %.nf, āĻ
āĻĨāĻŦāĻž %.ng format specifier āĻĻāĻŋā§ā§Âļ
(āĻāĻāĻž printf() āĻāϰ format string āĻ āĻšā§)
â Basic Syntax:Âļ
đ āĻāĻāĻžāύ⧠n āĻŽāĻžāύ⧠āĻšāĻā§āĻā§: āĻĻāĻļāĻŽāĻŋāĻā§āϰ āĻĒāϰ⧠āĻāĻĒāύāĻŋ āĻā§ āĻāϰ āĻĻā§āĻāĻžāϤ⧠āĻāĻžāύ
đĸ Example with CodeÂļ
#include <stdio.h>
int main() {
float pi = 3.1415926535;
printf("Original: %f\n", pi); // Default: 6 digit after point
printf("2 digits: %.2f\n", pi); // 3.14
printf("4 digits: %.4f\n", pi); // 3.1416
printf("6 digits: %.6f\n", pi); // 3.141593 (default float)
return 0;
}
đ§ž Output:Âļ
đ¯ Bonus: Scientific Precision with %e or %gÂļ
%g smart format: it removes trailing zeros or chooses scientific form automatically:
đ§ Analogy:Âļ
āϧāϰā§āύ āĻāĻĒāύāĻŋ āĻāĻāĻāĻž āĻāĻŽ āĻāĻžāĻāϞā§āύ đĨ â
- āĻā§āĻ āĻŦāϞāϞ: "āĻāĻŽāĻžāϰ ⧍ āĻā§āĻāϰāĻž āĻĻāĻžāĻ"
- āĻā§āĻ āĻŦāϞāϞ: "āĻāĻŽāĻžāϰ ā§Ē āĻā§āĻāϰāĻž āĻāĻžāĻ"
đ āĻāĻāύ āĻāĻĒāύāĻŋ āϏā§āĻ āĻ āύā§āϝāĻžā§ā§ āĻāĻžāĻāϞā§āύ â āϤā§āĻŽāύāĻŋ āĻāϰā§, float/double number āĻā§āĻ āĻāĻžāĻāĻāĻžāĻāĻ āĻāϰ⧠āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰ āĻĒāϰā§āϝāύā§āϤ āĻĻā§āĻāĻžāύ⧠āĻšā§!
â ī¸ Common Mistakes âÂļ
| āĻā§āϞ | āĻā§āύ āĻšā§ | Example |
|---|---|---|
%f use āĻāϰā§āĻ āĻĻāĻļāĻŽāĻŋāĻ āĻāϰ āĻāĻžāϏā§āĻāĻŽāĻžāĻāĻ āύāĻž āĻāϰāĻž |
default 6 āĻāϰ āĻĻā§āĻāĻžā§ | %f = 3.141593 |
int variable āĻĻāĻŋā§ā§ precision expect āĻāϰāĻž |
āĻĻāĻļāĻŽāĻŋāĻ show āĻāϰāĻŦā§ āύāĻž â | int x = 5; printf("%.2f", x); |
%.nf āĻ āĻā§āϞ syntax |
syntax error | %.f, %2f â |
đ Pro Tip (Dynamic Precision):Âļ
āĻāĻāĻžāύ⧠* āĻŽāĻžāύ⧠āĻšāĻā§āĻā§ â precision dynamically āĻĻāĻŋāĻŦā§āύāĨ¤
â Practice Exercise (Challenge):Âļ
Try to print these numbers in different precision:
float a = 1.23456789;
double b = 12345.678901;
printf("%.3f", a);
printf("%.6f", b);
printf("%.1e", b);
đ§Š Visual: Format Specifier FlowchartÂļ
+-----------------------------+
| Do you want decimal output?|
+-------------+---------------+
|
+-------v--------+
| YES |
+-------+--------+
|
+--------v--------+
| What format? |
+--------+--------+
|
+---------------+--------------------+
| |
+-----v-----+ +--------v--------+
| Fixed | | Scientific Form |
| Decimal | | (Exponent form) |
+-----------+ +-----------------+
| |
%.2f, %.4f... %.2e, %.3e...
đ Code Examples Recap:Âļ
#include <stdio.h>
int main() {
float pi = 3.1415926535;
// Fixed precision
printf("Default (6 digits): %f\n", pi);
printf("2 digits: %.2f\n", pi);
printf("4 digits: %.4f\n", pi);
printf("6 digits: %.6f\n", pi);
// Scientific Notation
printf("Scientific (2 digits): %.2e\n", pi);
// Smart formatting
printf("Smart format: %.4g\n", pi);
// Dynamic precision
int n = 3;
printf("Dynamic precision: %.*f\n", n, pi);
return 0;
}
đ§ Summary TableÂļ
| Format | Meaning | Example for pi (3.1415926) |
|---|---|---|
%.2f |
2 decimal points | 3.14 |
%.4f |
4 decimal points | 3.1416 |
%.6f |
6 decimal points (default) | 3.141593 |
%.2e |
Scientific notation (2 digits) | 3.14e+00 |
%.4g |
Smart format | 3.142 |
%.*f |
Dynamic precision | Depends on variable |
â Practice Challenge for YouÂļ
Try these: