Back to C Programming
2026-07-125 min read

Example 3: float and double Output (C Programming)

Learn Example 3: float and double Output (C Programming) step by step with clear examples and exercises.

Why This Matters

In this full guide, we'll delve into the intricacies of working with floating-point numbers (float and double) and their output in C programming. We'll explore why understanding this is crucial for your coding journey, learn about essential prerequisites, look closely at the core concept, walk through a worked example, identify common mistakes, practice with questions, and answer frequently asked questions.

Why This Matters

Understanding how to work with floating-point numbers in C programming is vital for several reasons:

  1. Real-world applications often involve dealing with decimal values, making it necessary to know how to handle float and double data types.
  2. Floating-point arithmetic can be tricky due to rounding errors, and being aware of these pitfalls will help you avoid common mistakes.
  3. Knowing how to output floating-point numbers correctly is essential for debugging and understanding the results of your programs.
  4. During interviews or exams, you may encounter questions related to float and double output, so mastering this topic can give you an edge.

Prerequisites

Before diving into the core concept, make sure you have a solid grasp of the following:

  1. Basic C syntax and control structures (variables, if-else statements, loops)
  2. Understanding of data types in C (int, char, etc.)
  3. Familiarity with basic input/output functions (printf(), scanf())
  4. Knowledge about floating-point numbers and their representation in computers (binary fraction format)

Core Concept

In C programming, float and double are used to represent real numbers with decimal points. They store approximate values due to the binary nature of computers.

Float

The float data type stores single-precision floating-point numbers, which have approximately 6–7 significant digits. The size of a float variable is typically 32 bits or 4 bytes.

float myFloat = 3.14; // Declaring and initializing a float variable

Double

The double data type stores double-precision floating-point numbers, which have approximately 15 significant digits. The size of a double variable is typically 64 bits or 8 bytes.

double myDouble = 3.141592653589793; // Declaring and initializing a double variable with more decimal places

Outputting float and double values

To output floating-point numbers using the printf() function, you can use the following format specifiers:

  1. %f for both float and double variables
  2. %e for scientific notation (exponent form) of both float and double variables
  3. %g for choosing between %f and %e, based on a better fit for the output value
#include <stdio.h>

int main() {
float myFloat = 3.14;
double myDouble = 3.141592653589793;

printf("myFloat: %.2f\n", myFloat); // Outputs: myFloat: 3.14
printf("myDouble: %.17Lf\n", myDouble); // Outputs: myDouble: 3.141592653589793
printf("myDouble (e-format): %e\n", myDouble); // Outputs: myDouble (e-format): 3.141592653589793e+00
printf("myFloat or myDouble (g-format): %.5g\n", myDouble); // Outputs: myFloat or myDouble (g-format): 3.14159

return 0;
}

Worked Example

Let's write a program that calculates the area of a circle using float and double variables, and outputs the result in both formats:

#include <stdio.h>
#define PI 3.141592653589793

int main() {
float radius = 5.0;
double area_double = PI * radius * radius;
float area_float = PI * (float)radius * (float)radius;

printf("Area using double: %.2Lf\n", area_double); // Outputs: Area using double: 78.54
printf("Area using float: %.2f\n", area_float); // Outputs: Area using float: 78.53999961853027

return 0;
}

Common Mistakes

  1. Not casting the radius to a float when calculating the area, leading to incorrect results (as shown in the worked example).
  2. Forgetting to include the header file ``.
  3. Using the wrong format specifier for a particular use case (e.g., using %d instead of %f or %e).
  4. Incorrectly rounding floating-point numbers by not providing enough precision in the output.
  5. Not understanding the difference between float and double, leading to choosing the wrong data type for a given situation.

Practice Questions

  1. Write a program that calculates the area of a rectangle using float variables and outputs the result using %f.
  2. Write a program that calculates the volume of a sphere using double variables and outputs the result using both %f and %e.
  3. Modify the worked example to calculate the circumference of a circle instead of its area, and output the result using both %f and %e.
  4. Write a program that takes user input for the radius of a circle and outputs the area using both %f and %e.

FAQ

What is the difference between float and double in C programming?

  • Float stores single-precision floating-point numbers, while double stores double-precision floating-point numbers. Double has more precision and a larger storage size.

Why are there rounding errors when working with floating-point numbers in C programming?

  • Rounding errors occur due to the binary nature of computers, which cannot exactly represent decimal values. The limited number of bits used to store floating-point numbers also contributes to these errors.

When should I use float and when should I use double in my program?

  • Use float when you need less precision or are working with memory-constrained environments, such as embedded systems. Use double when you require more precision or are dealing with large numbers or scientific calculations.

How do I output floating-point numbers with a specific number of decimal places in C programming?

  • You can use the printf() function's format specifier (e.g., %.2f) to control the number of decimal places displayed for a given float or double variable.

What is the difference between %f, %e, and %g in C programming?

  • %f outputs floating-point numbers in decimal format, while %e outputs them in scientific notation (exponent form). %g chooses between these two based on a better fit for the output value.