For working professionals
For fresh graduates
More
5. Array in C
13. Boolean in C
18. Operators in C
33. Comments in C
38. Constants in C
41. Data Types in C
49. Double In C
58. For Loop in C
60. Functions in C
70. Identifiers in C
81. Linked list in C
83. Macros in C
86. Nested Loop in C
97. Pseudo-Code In C
100. Recursion in C
103. Square Root in C
104. Stack in C
106. Static function in C
107. Stdio.h in C
108. Storage Classes in C
109. strcat() in C
110. Strcmp in C
111. Strcpy in C
114. String Length in C
115. String Pointer in C
116. strlen() in C
117. Structures in C
119. Switch Case in C
120. C Ternary Operator
121. Tokens in C
125. Type Casting in C
126. Types of Error in C
127. Unary Operator in C
128. Use of C Language
Double in C is used to store real numbers (decimal values) that require more precision and a larger range than regular floating-point numbers.
It is commonly used when you need to represent very large or very small numbers with more accuracy, like in calculations for finance, science, or engineering.
The double data type takes up 8 bytes of memory and can store values ranging from approximately ±1.7 × 10^308.
In this tutorial, you'll learn how to use the double data type in C to perform operations on decimal numbers, allowing you to handle calculations with greater precision and a larger range.
Improve your C programming skills with our Software Development courses — take the next step in your learning journey!
In C, the double data type is used to store decimal (floating-point) numbers. To declare a variable of type double, you can use the following syntax:
double variable_name;
Here’s a simple example to declare and use double variables:
#include <stdio.h>
int main() {
double length = 4.5; // Declare and initialize the length
double width = 3.2; // Declare and initialize the width
double area; // Declare the area variable
area = length * width; // Calculate the area of the rectangle
printf("The area of the rectangle is %.2f\n", area); // Print the result
return 0;
}
Explanation:
Output:
The area of the rectangle is 14.40
This example demonstrates how to declare and use double variables for storing and performing calculations with decimal numbers.
Also Read: Types of Operators in C: Roles, Usage & Best Practices 2025
Now that you know how to declare a double variable in C, let's explore how double precision works under the hood and how it affects the representation of real numbers in memory.
In C, the double data type uses the floating-point format to store decimal values. It follows the IEEE 754 standard, which is a widely adopted format for representing real numbers.
The double data type in C is typically represented using 64 bits, also called double-precision floating point.
The 64-bit representation is divided into three main parts:
1. Sign Bit (1 bit):
2. Exponent (11 bits):
3. Significand (52 bits):
Example Breakdown:
Consider the number -6.75 stored in double-precision:
Important Note: The exact representation of a double may differ based on the compiler and system architecture. Different compilers may use different bit layouts for the sign, exponent, and significand.
Additionally, some systems may represent the double value using different byte alignments.
Understanding this layout helps you appreciate how double values are stored in memory and the precision they can offer in calculations.
Also Read: Data Types in C and C++ Explained for Beginners
Understanding how double precision works is crucial, but seeing it in action makes it clearer. Let’s look at some practical programs where you can use the double data type for precise calculations.
Here are a few simple C programs that demonstrate how to use the double data type for various operations. These programs highlight how to handle decimal values, perform conversions, and work with precision in C.
1. Program to Get the Size of Data Types Using sizeof() Function
The sizeof() function in C helps us find the memory size of different data types. This program uses it to print the size of several data types, including double.
#include <stdio.h>
int main(void) {
printf("Size of char: %d bytes\n", sizeof(char));
printf("Size of int: %d bytes\n", sizeof(int));
printf("Size of float: %d bytes\n", sizeof(float));
printf("Size of double: %d bytes\n", sizeof(double));
return 0;
}
Explanation: This program prints the size of common data types. The sizeof(double) returns the size of the double data type, which is typically 8 bytes.
Output:
Size of char: 1 bytes
Size of int: 4 bytes
Size of float: 4 bytes
Size of double: 8 bytes
2. Program to Convert Feet into Meters Using Double
This program converts a length in feet to meters using the double data type for precision.
#include <stdio.h>
int main() {
double feet, meters;
printf("Enter the length in feet: ");
scanf("%lf", &feet);
meters = feet * 0.3048; // Convert feet to meters
printf("Length in meters: %.2f\n", meters);
return 0;
}
Explanation: The user is asked to input a length in feet. The program then converts the length to meters using the conversion factor 0.3048 and prints the result.
Output:
Enter the length in feet: 10
Length in meters: 3.05
3. Program to Convert an Integer to Double
This program shows how to convert an integer into a double in C.
#include <stdio.h>
int main() {
int integerData = 10;
double doubleData = (double) integerData; // Convert integer to double
printf("Integer Data: %d\n", integerData);
printf("Double Data: %.2f\n", doubleData);
return 0;
}
Explanation: Here, the integer value 10 is cast to a double using (double) before assigning it to the doubleData variable. This allows us to work with the value as a decimal.
Output:
Integer Data: 10
Double Data: 10.00
4. Program to Convert Celsius to Fahrenheit
This program converts a temperature from Celsius to Fahrenheit using double precision for the calculations.
#include <stdio.h>
int main() {
double celsius, fahrenheit;
printf("Input the temperature in Celsius: ");
scanf("%lf", &celsius);
fahrenheit = (celsius * 9 / 5) + 32; // Conversion formula
printf("Temperature in Fahrenheit: %.2f\n", fahrenheit);
return 0;
}
Explanation: The user inputs a temperature in Celsius, and the program uses the formula to convert it to Fahrenheit. The result is displayed with two decimal places.
Output:
Enter the temperature in Celsius: 25
Temperature in Fahrenheit: 77.00
5. Program to Print the Sum of Two Double Numbers Using a Function
This program shows how to use a function to calculate the sum of two double values.
#include <stdio.h>
double calculateSum(double num1, double num2) {
return num1 + num2; // Return the sum of two numbers
}
int main() {
double number1, number2, sum;
printf("Enter the first number: ");
scanf("%lf", &number1);
printf("Enter the second number: ");
scanf("%lf", &number2);
sum = calculateSum(number1, number2);
printf("Sum: %.2f\n", sum);
return 0;
}
Explanation: The user is prompted to enter two decimal numbers. The calculateSum() function adds the two numbers, and the result is displayed with two decimal places.
Output:
Enter the first number: 3.14
Enter the second number: 2.5
Sum: 5.64
These programs demonstrate how to use the double data type for various tasks such as calculations, conversions, and storing precise decimal values.
The double type is perfect for handling large or small numbers with high accuracy in applications like scientific computations, financial calculations, and more.
Also Read: String Function in C with Examples
Now that you’ve seen examples of using double, let’s compare it with the float data type to help you understand when to use each one for better precision and performance in your programs.
Float is used for scenarios where speed and memory efficiency are crucial, but absolute precision is not required. Double is preferred for tasks requiring high precision and accuracy in calculations, especially where decimal errors need to be minimized.
Here’s a comparison of the float and double data types in C, highlighting their key differences:
Aspect | Float | Double |
Memory Size | 4 bytes (32 bits) | 8 bytes (64 bits) |
Precision | Approximately 6 decimal places | Approximately 15 decimal places |
Speed | Faster calculations due to smaller size | Slower calculations due to larger size |
Use Cases | Used in graphics libraries or where speed is more important than precision | Used in financial, scientific, and engineering calculations that require high precision |
Performance | More efficient in memory and processing | Requires more memory and processing power |
Storage Range | Smaller range of values | Larger range of values |
Typical Usage | Suitable for applications with less emphasis on precision (e.g., graphics rendering) | Suitable for applications requiring high precision and accuracy (e.g., scientific computations) |
Also Read: Top 25+ C Programming Projects for Beginners and Professionals
With a clearer understanding of when to use float and double, let's go over some best practices and tips to help you get the most out of the double data type, avoiding common pitfalls.
The double data type in C is essential for handling decimal numbers with higher precision. To use it effectively and avoid common pitfalls, it’s important to follow best practices that ensure code clarity, precision, and efficiency.
Below are some key tips and best practices for using the double data type:
Tip/Best Practice | Explanation |
Use double when precision matters | Use double for calculations requiring more than 6 decimal places of precision, such as scientific, financial, or engineering tasks. |
Be mindful of performance | While double provides higher precision, it may have a performance cost due to its larger memory size (8 bytes). Use float for performance-critical tasks where precision is less important. |
Avoid unnecessary precision | If high precision is not needed, consider using float to save memory and improve performance, especially in memory-constrained environments. |
Use proper formatting | When printing double values, use appropriate format specifiers like %.2f to control decimal places and avoid excessive precision in output. |
Be cautious with rounding errors | Double values can still have rounding errors due to finite precision. Be careful with comparisons and ensure tolerance levels for errors when necessary. |
Use typecasting carefully | When converting between data types (e.g., from float to double), ensure that the value fits the required precision. Use typecasting to safely convert between types if needed. |
Understand system limitations | Different systems and compilers may have different representations for double values. Be mindful of these differences, especially when sharing data between systems. |
Avoid using double for simple calculations | If the calculations involve small numbers or simple tasks, using double can be overkill. In such cases, float or even integer types may suffice. |
Check for overflow/underflow | Double values have a wide range, but they can still overflow or underflow. Always ensure that the values you are working with are within the representable range for double. |
Avoid using double for non-decimal values | While double is great for decimals, use integer types when dealing with non-decimal numbers to avoid unnecessary complexity and storage overhead. |
Use constants for precision | If you're performing calculations that require a fixed number of decimal places, define constants for precision (like 3.14159) to maintain consistency throughout your program. |
These best practices will help you effectively utilize the double data type in C, ensuring that your code remains efficient, readable, and accurate.
Also Read: Command Line Arguments in C Explained
Following the best practices will help you maximize the benefits of double in C, but it’s also important to consider their limitations. Let’s take a closer look at the advantages and potential drawbacks of using double in C.
The double data type in C provides high precision for floating-point calculations, making it invaluable in scientific, financial, and engineering applications. However, like any tool, it comes with its benefits and drawbacks depending on the use case.
Let’s explore both:
Aspect | Benefits | Drawbacks |
Precision | Provides high precision, with around 15 decimal places, ideal for calculations requiring accuracy. | Higher precision comes at the cost of performance and memory usage, as double occupies more memory than float. |
Range | Can represent a large range of values (approximately ±1.7 × 10^308), suitable for extreme values in computations. | Larger range can sometimes be unnecessary, leading to wasted memory for simpler calculations. |
Readability for Complex Calculations | Improves clarity in code when handling large decimal numbers or precise calculations. | For simple calculations, the increased precision may not be needed, making the code unnecessarily complex. |
Memory Usage | Ideal for applications that require higher accuracy, such as scientific computing or financial modeling. | Double takes up 8 bytes, which is double the size of a float, making it less memory-efficient. |
Performance | Doubles provide better precision, reducing rounding errors in calculations and minimizing data loss. | Operations with double can be slower compared to float, particularly on systems where float is optimized. |
Compatibility | Works well for applications that require high precision and consistency, like simulations or scientific experiments. | On some systems, floating-point operations may have lower performance for double compared to float. |
Compatibility with Libraries | Many scientific and financial libraries prefer double for higher precision and more accurate results. | May cause unnecessary overhead in cases where high precision is not necessary, slowing down calculations. |
Ease of Use | Provides a straightforward way to handle very large or very small numbers without losing significant digits. | Incorrect or unnecessary use of double may introduce precision errors, especially when compared to integers. |
Rounding and Precision Errors | Reduces the likelihood of rounding errors in operations like division or subtraction, providing accurate results. | Double precision is still limited by hardware, and certain calculations may still introduce tiny rounding errors. |
Portability | Double is widely supported across different platforms, ensuring consistency across systems. | Differences in how double values are handled between compilers or platforms could affect the results. |
Practicality in Real-World Applications | Essential for applications in finance, scientific research, and engineering, where exact values matter. | Not needed for every application; using double for simple tasks may result in unnecessary complexity. |
Also Read: Top 9 Popular String Functions in C with Examples Every Programmer Should Know in 2025
You now have a solid understanding of the pros and cons of double in C. Test your knowledge with this quiz to see how well you grasp the concepts and its applications.
Assess your understanding of the double data type in C, including its syntax, precision, and real-world applications. Answer the following multiple-choice questions:
1. What is the size of the double data type in C?
a) 2 bytes
b) 4 bytes
c) 8 bytes
d) 16 bytes
2. Which of the following is true about double in C?
a) It offers precision of approximately 6 decimal places
b) It offers precision of approximately 15 decimal places
c) It takes up 4 bytes of memory
d) It can store only integers
3. What is the correct syntax for declaring a double variable in C?
a) float variable_name;
b) double variable_name;
c) int variable_name;
d) decimal variable_name;
4. What will the following code print?
double num = 12.34567;
printf("%.3f\n", num);
a) 12.345
b) 12.35
c) 12.34567
d) 12.3
5. Which of the following operations would double be best suited for?
a) Simple integer calculations
b) Calculations requiring high precision and handling very large or very small numbers
c) Storing boolean values
d) Storing characters
6. What happens if a double value exceeds the range of ±1.7 × 10^308 in C?
a) It will overflow and cause an error
b) It will be converted to zero
c) It will be stored as the maximum value
d) It will be rounded to the nearest integer
7. Which of the following best describes the use of the double data type in scientific computing?
a) It is rarely used due to its low precision
b) It is used for applications that require high precision and a large range of values
c) It is used only for integer values in scientific calculations
d) It is used for handling single decimal places
8. What is the effect of casting an int value to double in C?
a) The int value is truncated to a whole number
b) The int value is converted into a floating-point number with decimal places
c) It results in a compile-time error
d) It causes the value to be rounded to the nearest integer
9. Which of the following is an advantage of using double over float in C?
a) double takes up less memory than float
b) double offers higher precision and a larger range of values
c) double is always faster than float
d) double can only store integers, unlike float
10. Which of the following is NOT a typical use case for the double data type in C?
a) Performing financial calculations requiring high accuracy
b) Simulating physical phenomena where precise values are needed
c) Storing temperature values in Celsius or Fahrenheit
d) Storing pixel data in image processing
This quiz will test your understanding of double in C, covering its syntax, usage, and when it’s appropriate to use this data type for high-precision calculations.
Also Read: 25 Most Common C Interview Questions & Answers [For Freshers]
Well done on completing the quiz! To continue expanding your skills in C programming and stay ahead of the curve, consider upskilling with upGrad’s expert-led courses to learn more about advanced programming concepts and real-world applications.
upGrad’s courses offer expert training in C programming, covering essential topics like the double data type, floating-point precision, and real-world applications of decimal calculations. You’ll gain hands-on experience by solving practical programming challenges, such as working with double for scientific calculations, financial computations, and more.
Below are some relevant upGrad courses to elevate your programming skills and advance your career:
You can also get personalized career counseling with upGrad to guide your career path, or visit your nearest upGrad center and start hands-on training today!
Similar Reads:
Explore C Tutorials: From Beginner Concepts to Advanced Techniques
Addition of Two Numbers in C: A Comprehensive Guide to C Programming
C Program to check Armstrong Number
Array in C: Introduction, Declaration, Initialisation and More
Exploring Array of Pointers in C: A Beginner's Guide
What is C Function Call Stack: A Complete Tutorial
Discovering C Operators: An Overview with Types and Examples!
C Enum Type: Definition and Practical Implementation
Factorial Program of a Number in C
15 Most Important Features of C Language
Fibonacci Series Program in C Using Recursion
How to Use the For Loop in C Effectively?
Format Specifiers in C Programming
Use the round() function from the math.h library to round a double to the nearest integer value. For example, double rounded = round(3.6);.
Yes, double can represent special values like NaN (Not a Number) for undefined or unrepresentable calculations, using NAN from math.h.
When assigning a double to an int, the fractional part of the double is truncated (not rounded) and only the integer part is stored.
Yes, you can perform arithmetic operations between double and integer types. The integer will be automatically promoted to a double for the operation.
Directly comparing double values for equality is discouraged due to precision issues. It’s better to check if the absolute difference is within a small threshold, like fabs(a - b) < epsilon.
Repeated calculations with double can introduce small precision errors over many iterations, especially when dealing with very small numbers. It may lead to cumulative rounding errors.
While double can store approximations of irrational numbers, it cannot store them exactly. For example, double pi = 3.14159265358979; is an approximation of pi.
You can use the sqrt() function from math.h to find the square root of a double. For example, double result = sqrt(25.0);.
You can represent numbers in scientific notation with double by using the e notation. For example, double value = 1.23e4; represents 1.23 × 10^4.
Yes, double is capable of storing large numbers, but it has a finite precision. Numbers beyond its range can result in overflow or underflow.
While the C standard defines how double should behave, the actual representation and precision may vary slightly between different systems, compilers, and floating-point hardware.
Take a Free C Programming Quiz
Answer quick questions and assess your C programming knowledge
Author
Start Learning For Free
Explore Our Free Software Tutorials and Elevate your Career.
Talk to our experts. We are available 7 days a week, 9 AM to 12 AM (midnight)
Indian Nationals
1800 210 2020
Foreign Nationals
+918045604032
1.The above statistics depend on various factors and individual results may vary. Past performance is no guarantee of future results.
2.The student assumes full responsibility for all expenses associated with visas, travel, & related costs. upGrad does not provide any a.