Excerpt from the C99 standard, normative annex F (The C++-standard does not explicitly mention this annex, though it includes all affected functions without change per reference. Also, the types have to match for compatibility.):

IEC 60559 floating-point arithmetic

F.1 Introduction

1 This annex specifies C language support for the IEC 60559 floating-point standard. The IEC 60559 floating-point standard is specifically Binary floating-point arithmetic for microprocessor systems, second edition (IEC 60559:1989), previously designated IEC 559:1989 and as IEEE Standard for Binary Floating-Point Arithmetic (ANSI/IEEE 754−1985). IEEE Standard for Radix-Independent Floating-Point Arithmetic (ANSI/IEEE 854−1987) generalizes the binary standard to remove dependencies on radix and word length. IEC 60559 generally refers to the floating-point standard, as in IEC 60559 operation, IEC 60559 format, etc. An implementation that defines __STDC_IEC_559__ shall conform to the specifications in this annex.356) Where a binding between the C language and IEC 60559 is indicated, the IEC 60559-specified behavior is adopted by reference, unless stated otherwise. Since negative and positive infinity are representable in IEC 60559 formats, all real numbers lie within the range of representable values.

So, include <math.h> (or in C++ maybe <cmath>), and test for __STDC_IEC_559__.

If the macro is defined, not only are the types better specified (float being 32bits and double being 64bits among others), but also the behavior of builtin operators and standard-functions is more specified.
Lack of the macro does not give any guarantees.

For x86 and x86_64 (amd64), you can rely on the types float and double being IEC-60559-conformant, though functions using them and operations on them might not be.

Answer from Deduplicator on Stack Overflow
Top answer
1 of 7
22

Excerpt from the C99 standard, normative annex F (The C++-standard does not explicitly mention this annex, though it includes all affected functions without change per reference. Also, the types have to match for compatibility.):

IEC 60559 floating-point arithmetic

F.1 Introduction

1 This annex specifies C language support for the IEC 60559 floating-point standard. The IEC 60559 floating-point standard is specifically Binary floating-point arithmetic for microprocessor systems, second edition (IEC 60559:1989), previously designated IEC 559:1989 and as IEEE Standard for Binary Floating-Point Arithmetic (ANSI/IEEE 754−1985). IEEE Standard for Radix-Independent Floating-Point Arithmetic (ANSI/IEEE 854−1987) generalizes the binary standard to remove dependencies on radix and word length. IEC 60559 generally refers to the floating-point standard, as in IEC 60559 operation, IEC 60559 format, etc. An implementation that defines __STDC_IEC_559__ shall conform to the specifications in this annex.356) Where a binding between the C language and IEC 60559 is indicated, the IEC 60559-specified behavior is adopted by reference, unless stated otherwise. Since negative and positive infinity are representable in IEC 60559 formats, all real numbers lie within the range of representable values.

So, include <math.h> (or in C++ maybe <cmath>), and test for __STDC_IEC_559__.

If the macro is defined, not only are the types better specified (float being 32bits and double being 64bits among others), but also the behavior of builtin operators and standard-functions is more specified.
Lack of the macro does not give any guarantees.

For x86 and x86_64 (amd64), you can rely on the types float and double being IEC-60559-conformant, though functions using them and operations on them might not be.

2 of 7
14

Does not say anything about the size.

3.9.1.8

There are three floating point types: float, double, and long double. The type double provides at least as much precision as float, and the type long double provides at least as much precision as double. The set of values of the type float is a subset of the set of values of the type double; the set of values of the type double is a subset of the set of values of the type long double. The value representation of floating-point types is implementation-defined. Integral and floating types are collectively called arithmetic types. Specializations of the standard template std::numeric_limits (18.3) shall specify the maximum and minimum values of each arithmetic type for an implementation.

🌐
W3Schools
w3schools.com › c › c_data_types.php
C Data Types
1 month ago - HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS DSA TYPESCRIPT SWIFT ANGULAR ANGULARJS GIT POSTGRESQL MONGODB ASP AI R GO KOTLIN SWIFT SASS VUE GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE INTRO TO PROGRAMMING HTML & CSS BASH RUST TOOLS ... Create Variables Format Specifiers Change Values Multiple Variables Variable Names Real-Life Examples Code Challenge C Data Types · Data Types Characters Numbers Decimal Precision Memory Size Real-Life Example Extended Types Code Challenge C Type Conversion C Constants C Operators
Discussions

What does it mean in C that data type "Double" is more "expensive" than data type "Float"
As it says there: twice the size. A double typically takes up 64 bits of memory, and a float only 32. More on reddit.com
🌐 r/learnprogramming
18
7
December 6, 2021
Can someone explain about double and why it is only 8 bytes in size?
How is it possible that a number with 308 digits can be held in only 8 bytes? Isn't one byte supposed to be 8 bits, meaning 8 bytes are 64 bits, meaning maximum number there should be floating point number use the binary equivalent of scientific notation . Numbers are stored as a fixed number of digits, an exponent and a sign. The exponent can be used to make the very small or very big, but the previsions will always be the same (53 bits for double). This means that for big enough numbers (> 253) doubles won't be accurate enough to represent integers perfectly. Doubles have one bit for the sign, 11 for the exponent and 53 for the mantissa. Floats work the same way: 1 bit for the sign, 8 for the exponent and 24 for the mantissa. More on reddit.com
🌐 r/learnprogramming
19
2
July 2, 2018
float vs. double – What's the Key Difference?"
C and C++ will give you more ways ... these considerations aren't necessarily limited to those languages. ... The difference is memory size. Floats in Java (which I assume is the language you’re talking about) take up 32 bits of memory, the same as an integer. Doubles, as you might ... More on reddit.com
🌐 r/learnprogramming
12
16
November 2, 2024
Difference between double and long double
In total, a double is stored in 64 bits and a long double in 80 bits Not necessarily. The standard defines a long double as having "at least as much precision as double" (and a double as "at least as much precision as float"), so it doesn't have to be 80. In fact, if you're using MSVC, Microsoft specifically calls out the fact that The representation of long double and double is identical . That being said, you need to specify that 3.2 is a long double for c, otherwise it will just convert the double 3.2 into a long double, which won't have the same precision: long double c = 3.2L;. That will make a difference on platforms that do have different representations for double and long doubles: https://repl.it/repls/AfraidNervousScripts More on reddit.com
🌐 r/cpp_questions
3
3
January 28, 2020

Excerpt from the C99 standard, normative annex F (The C++-standard does not explicitly mention this annex, though it includes all affected functions without change per reference. Also, the types have to match for compatibility.):

IEC 60559 floating-point arithmetic

F.1 Introduction

1 This annex specifies C language support for the IEC 60559 floating-point standard. The IEC 60559 floating-point standard is specifically Binary floating-point arithmetic for microprocessor systems, second edition (IEC 60559:1989), previously designated IEC 559:1989 and as IEEE Standard for Binary Floating-Point Arithmetic (ANSI/IEEE 754−1985). IEEE Standard for Radix-Independent Floating-Point Arithmetic (ANSI/IEEE 854−1987) generalizes the binary standard to remove dependencies on radix and word length. IEC 60559 generally refers to the floating-point standard, as in IEC 60559 operation, IEC 60559 format, etc. An implementation that defines __STDC_IEC_559__ shall conform to the specifications in this annex.356) Where a binding between the C language and IEC 60559 is indicated, the IEC 60559-specified behavior is adopted by reference, unless stated otherwise. Since negative and positive infinity are representable in IEC 60559 formats, all real numbers lie within the range of representable values.

So, include <math.h> (or in C++ maybe <cmath>), and test for __STDC_IEC_559__.

If the macro is defined, not only are the types better specified (float being 32bits and double being 64bits among others), but also the behavior of builtin operators and standard-functions is more specified.
Lack of the macro does not give any guarantees.

For x86 and x86_64 (amd64), you can rely on the types float and double being IEC-60559-conformant, though functions using them and operations on them might not be.

Answer from Deduplicator on Stack Overflow
🌐
Wikipedia
en.wikipedia.org › wiki › C_data_types
C data types - Wikipedia
April 7, 2026 - Various rules in the C standard make unsigned char the basic type used for arrays suitable to store arbitrary non-bit-field objects: its lack of padding bits and trap representations, the definition of object representation, and the possibility of aliasing. The actual size and behavior of floating-point types also vary by implementation. The only requirement is that long double is not smaller than double, which is not smaller than float.
🌐
Reddit
reddit.com › r/learnprogramming › what does it mean in c that data type "double" is more "expensive" than data type "float"
r/learnprogramming on Reddit: What does it mean in C that data type "Double" is more "expensive" than data type "Float"
December 6, 2021 -

I was wondering why you wouldn't just use a double all the time instead of a float. I googled and found this as an explanation:

Double is more precise than float and can store 64 bits; double the number of bits float can store. We prefer double over float if we need to do precision up to 15 or 16 decimal points; otherwise, we can stick to float in most applications, as double is more expensive.

Difference between float and double in C/C++ | Coding Ninjas Blog

Can anyone clarify what being "more expensive" means in this context?

🌐
GeeksforGeeks
geeksforgeeks.org › c language › c-float-and-double
C Float and Double - GeeksforGeeks
May 14, 2023 - Note: By default, decimal literals ... can store real numbers with precision up to 15 decimal places. The size of the double is 8 bytes....
Find elsewhere
🌐
Medium
medium.com › @Dev_Frank › datatypes-in-c-double-long-double-void-bool-0e55eaec1380
DATATYPES IN C (double, long double, void, bool) | by Dev Frank | Medium
February 5, 2024 - We are going to see more datatypes in this story ... The double data type typically requires 8 bytes of memory on most systems, providing more precision compared to the float data type.
🌐
Codefinity
codefinity.com › blog › Float-vs-Double
Float vs Double
This course offers an opportunity to delve deeper into data types in C++, gaining insights into how they are stored in memory. Additionally, the course covers the topic of type conversion. ... Float and double are data types used in programming to store numerical values with decimal points.
🌐
Scaler
scaler.com › home › topics › what is double in c?
What is Double in C? - Scaler Topics
April 28, 2024 - Any variable declared using the double data type in C is of the size 8 bytes (or 64 bits).
🌐
GeeksforGeeks
geeksforgeeks.org › c language › data-types-in-c
Data Types in C - GeeksforGeeks
The size of int: 4 The size of char: 1 The size of float: 4 The size of double: 8 · Different data types also have different ranges up to which can vary from compiler to compiler.
Published   April 22, 2026
🌐
Quora
quora.com › What-is-the-long-double-data-type-in-C-programming-language
What is the long double data type in C programming language? - Quora
Answer: A floating point type that is guaranteed to be at least as precise as the double type. Nothing else can be taken granted, for further information how your compiler handles this in a specific plattform read the plattform specific header file float.h or the compiler manual. The definitions ...
🌐
Reebok
reebok.com › products › reebok-club-c-double-womens-shoes-white-reebok-rubber-gum-07-white-104992
Women's Club C Double Shoes - Reebok
Women's Club C Double Shoes
Archive-inspired leather shoes with a platform midsole.Game. Set. Match. These women's tennis-inspired shoes elevate your style with a stacked midsole for extra height and a chunky profile. The upper is made of supple leather for a clean, minimalist look.
(4.3)
Price   $90.00
🌐
Medium
medium.com › @arashtad › data-types-in-c-int-char-float-double-etc-373570dc5f43
Data Types in C int char float double etc | by Arashtad | Medium
July 17, 2025 - #include int main() int age = 30; char initial = 'J'; float height = 5.9; double largeNumber = 123456.789012; printf(\\"Age: %d\ \\", age); printf(\\"Initial: %c\ \\", initial); printf(\\"Height: %.1f\ \\", height); printf(\\"Large Number: %.6f\ ...
🌐
Quora
quora.com › What-are-the-exact-minimum-and-maximum-range-of-float-double-and-long-double-data-type-in-C
What are the exact minimum and maximum range of float, double, and long double data type in C? - Quora
Answer (1 of 3): > What are the exact minimum and maximum range of float, double, and long double data type in C? The ranges can vary from one implementation to another. The ISO C standard imposes minimal values for the bounds of the floating-point types (and the integer types), but implementati...
🌐
TutorialKart
tutorialkart.com › c-programming › c-double-data-type
C double Data Type - Storage Size, Examples, Min and Max Values
February 20, 2025 - It allows storing real numbers with higher precision compared to the float data type and is commonly used for mathematical computations that require greater accuracy. The storage size of the double data type is typically 8 bytes (64 bits), though ...
🌐
Instagram
instagram.com › popular › double-c-cup-size
Double C Cup Size
We cannot provide a description for this page right now
🌐
FP Movement
freepeople.com › shoes › sneakers › reebok club c double sneakers
Reebok Club C Double Sneakers | Free People
Reebok Club C Double Sneakers
A tennis-inspired design with a modern update, these simple, chunky sneakers from Reebok feature a heritage leather upper design sat on a subtle platform midsole for a little lift. **Features:** Low-top style, leather uppers, perforated toe box, overlay details, platform rubber cupsole, terry lining, lace-up closure **Why We
Price   $85.00
🌐
TikTok
tiktok.com › discover › double-c-signature-designs
Double C Signature Designs | TikTok
March 30, 2026 - #signature #ideas #design #C. signature ideas letter c, signature with C, elegant signature, creative signature, ribbon c signature, music symbol signature, personalized signature, unique signature designs, signature inspiration, signature styles ... Double C Signature Writing Process Explained. Discover the elegant art of crafting a double C signature with precision and style.
🌐
NUS Computing
comp.nus.edu.sg › ~cs1020 › 4_misc › cs1010_lect › 2014 › prog › unit3 › Unit3_DataTypes.c
https://www.comp.nus.edu.sg/~cs1020/4_misc/cs1010_...
// Unit3_DataTypes.c // This program checks the memory size of each of the basic data types #include · int main(void) { printf("Size of 'int' (in bytes): %d\n", sizeof(int)); printf("Size of 'float' (in bytes): %d\n", sizeof(float)); printf("Size of 'double' (in bytes): %d\n", sizeof(double)); ...