Skip to content

C Set Decimal Precision

🧠 What does “Set Decimal Precision” mean?Âļ

👉 āϧāϰ⧇āύ āφāĻĒāύāĻŋ āĻāĻ•āϟāĻž āĻ­āĻ—ā§āύāĻžāĻ‚āĻļ āϰāĻžāĻ–āϛ⧇āύ:

float pi = 3.1415926535;

āĻāĻ–āύ āφāĻĒāύāĻŋ āϚāĻžāĻšā§āϛ⧇āύ āĻļ⧁āϧ⧁ ⧍ āϘāϰ (3.14) āĻ…āĻĨāĻŦāĻž ā§Ē āϘāϰ (3.1416) āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āĻĻ⧇āĻ–āĻžāϤ⧇āĨ¤

āĻāχ āĻĻ⧇āĻ–āĻžāύ⧋āϰ āύāĻŋ⧟āĻ¨ā§āĻ¤ā§āϰāĻŖāϟāĻžāϕ⧇āχ āĻŦāϞ⧇:

✅ “Setting Decimal Precision”
āĻŽāĻžāύ⧇ āĻšāĻšā§āϛ⧇ āĻĻāĻļāĻŽāĻŋāϕ⧇āϰ āĻĒāϰ⧇ āĻ•āϤ digit āĻĻ⧇āĻ–āĻžāĻŦā§‹, āϏ⧇āϟāĻž āĻ āĻŋāĻ• āĻ•āϰāĻžāĨ¤

🛠 C āϤ⧇ Decimal Precision āĻ•āĻŋāĻ­āĻžāĻŦ⧇ set āĻ•āϰāĻž āĻšā§Ÿ?Âļ

đŸŽ¯ āωāĻ¤ā§āϤāϰ: %0.*f, %.nf, āĻ…āĻĨāĻŦāĻž %.ng format specifier āĻĻāĻŋā§Ÿā§‡Âļ

(āĻāϟāĻž printf() āĻāϰ format string āĻ āĻšā§Ÿ)

✅ Basic Syntax:Âļ

printf("%.nf", value);

👉 āĻāĻ–āĻžāύ⧇ 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:Âļ

Original: 3.141593
2 digits: 3.14
4 digits: 3.1416
6 digits: 3.141593

đŸŽ¯ Bonus: Scientific Precision with %e or %gÂļ

printf("%.3e", pi); // 3.142e+00 (Scientific notation)

%g smart format: it removes trailing zeros or chooses scientific form automatically:

printf("%.4g", pi); // Output: 3.142

🧠 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):Âļ

int precision = 3;
float value = 5.6789;
printf("%.*f", precision, value); // Shows 5.679

āĻāĻ–āĻžāύ⧇ * āĻŽāĻžāύ⧇ āĻšāĻšā§āϛ⧇ — 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:

float a = 123.456789;
double b = 98765.43210;

printf("%.3f", a);   // Expected: 123.457
printf("%.6f", b);   // Expected: 98765.432100
printf("%.1e", b);   // Expected: 9.9e+04 approx
printf("%.5g", a);   // Smart format