I'm restricting this answer, perhaps unnecessarily, to IEEE754 floating point.

DBL_MIN is not allowed to be a subnormal number.

But std::nextafter is allowed to return a subnormal number.

Hence the return value of the latter could be less than DBL_MIN.

For more details see https://en.wikipedia.org/wiki/Denormal_number

Answer from Bathsheba on Stack Overflow
🌐
Apache
db.apache.org › derby › docs › 10.1 › ref › rrefsqljdoubleprecision.html
DOUBLE PRECISION
Largest DOUBLE value: 1.79769E+308 · Smallest positive DOUBLE value: 2.225E-307 · Largest negative DOUBLE value: -2.225E-307 · These limits are different from the java.lang.DoubleJava type limits. An exception is thrown when any double value is calculated or entered that is outside of these ...
Discussions

smallest double value greater zero - C++ Forum
Floating point representation is usually in normal form, a bit like scientific notation with one digit in front of the decimal point and an exponent e.g. 1.2345x10^-50 and so on. suppose the smallest exponent we could have was 10^-100 and we had 5 digit representation. The the smallest positive ... More on cplusplus.com
🌐 cplusplus.com
October 30, 2011
minimum double value in C/C++ - Stack Overflow
There are many answers going for -std::numeric_limits::max(). Fortunately, they will work well in most of the cases. Floating point encoding schemes decompose a number in a mantissa and an exponent and most of them (e.g. the popular IEEE-754) use a distinct sign bit, which doesn't belong to the mantissa. This allows to transform the largest positive in the smallest ... More on stackoverflow.com
🌐 stackoverflow.com
Why is the smallest positive number in 8-byte 2^-1022 and not 2^-1024?
In this fashion, the 11 bits used ... This leads to the number +1.0000 ... 0000 × 2^−1022 (52 zeros after the +1.) as the smallest positive number that can be represented using a double precision floating point representation.... More on mathworks.com
🌐 mathworks.com
1
0
October 19, 2014
How to represent a really small number in C?
You're getting some concepts mixed up. Doubles will do fine. Doubles have about 15 decimal digits worth of precision in their significand. But their significand alone doesn't determine which values it can store. The exponent plays a major role as well. The precision of the double as a whole is actually dynamic, changing with the value of the exponent. The smallest positive value a double can store is 4.94066*10-324 , which much smaller than what you need to store. More on reddit.com
🌐 r/learnprogramming
7
4
August 30, 2020
🌐
MathWorks
mathworks.com › matlab › language fundamentals › data types › numeric types
realmin - Smallest normalized floating-point number - MATLAB
This MATLAB function returns the smallest positive normalized floating-point number in IEEE double precision.
🌐
ETH Zurich
stat.ethz.ch › R-manual › R-devel › library › base › html › zMachine.html
R: Numerical Characteristics of the Machine
Note that on most platforms smaller positive values than .Machine$double.xmin can occur. On a typical R platform the smallest positive double is about 5e-324.
🌐
Cplusplus
cplusplus.com › forum › general › 53760
smallest double value greater zero - C++ Forum
October 30, 2011 - Floating point representation is usually in normal form, a bit like scientific notation with one digit in front of the decimal point and an exponent e.g. 1.2345x10^-50 and so on. suppose the smallest exponent we could have was 10^-100 and we had 5 digit representation. The the smallest positive number is 1.0000x10^-100, the next number above this is 1.0001x10^-100 but the next smallest one would be 0.
🌐
Xona
xona.com › 2006 › 07 › 26.html
Xona Games - Smallest Positive Floating Point Values
The exponent = -126..127 for 32-bit float, and -1022..1023 for 64-bit double. The mantissa (also known as the significand) is >= 1.0 and < 2.0. Thus the smallest possible positive float and double are such that the exponent and mantissa contain their smallest values:
🌐
Luasoftware
code.luasoftware.com › tutorials › java › smallest-double-number-for-java
Smallest Double Number For Java - Lua Software Code
MAX_VALUE: A constant holding the largest positive finite value of type double. ... MIN_VALUE: A constant holding the smallest positive nonzero value of type double.
🌐
Psu
astrostatistics.psu.edu › su07 › R › html › base › html › zMachine.html
R: Numerical Characteristics of the Machine
Note that on most platforms smaller positive values than .Machine$double.xmin can occur. On a typical · R platform the smallest positive double is about 5e-324.
Find elsewhere
🌐
MATLAB
matlab.izmiran.ru › help › techdoc › math › nondouble14.html
Largest and Smallest Numbers of Type double and single :: Nondouble Data Types (Mathematics)
When the result of a computation on numbers of type double is a positive number that is less than realmin, MATLAB returns either 0 or a subnormal floating-point number, that is, one that is not in standard form. Similarly, there is a smallest positive normalized floating-point number that you can represent in single precision, whose value is returned by realmin('single').
🌐
Bytes
bytes.com › home › forum › topic
smallest positive double number - Post.Byes
November 14, 2005 - The implementation probably does ... It can be answered quite authoritatively for the implementation you are compiling on at the moment, though: DBL_MIN, from <float.h>, is the smallest positive normalised double value....
🌐
Microsoft Learn
learn.microsoft.com › en-us › dotnet › api › system.double.epsilon
Double.Epsilon Field (System) | Microsoft Learn
The value of the Epsilon property reflects the smallest positive Double value that is significant in numeric operations or comparisons when the value of the Double instance is zero.
🌐
Psu
personal.psu.edu › jhm › f90 › lectures › real_num.html
Floating Point Numbers
The remaining 23 bits provide the mantissa, giving an approximate decimal precision of 7 digits. The largest number that can be stored is approximately 3x1038. The smallest positive number is approximately 1x10-38 . For a "double precision" floating point number, the information is stored within ...
🌐
Narkive
comp.lang.cpp.narkive.com › FG9HHedq › smallest-positive-double-number
smallest positive double number - comp.lang.c++
Post by g***@gmail.com I wonder aht is the smallest positive double number in C++ under 32-bit CPU #include <limits> double tiny = std::numeric_limits<double>::min(); or #include <climits> double tiny = DBL_MIN; Ralph
🌐
codestudy
codestudy.net › blog › is-dbl-min-the-smallest-positive-double
Is DBL_MIN the Smallest Positive Double? C++ std::nextafter Reveals Why It's Not (Windows 7/Visual Studio 2013) — codestudy.net
If you’ve worked with floating-point numbers in C++, you’ve likely encountered `DBL_MIN`—a macro defined in ` ` that’s often described as "the smallest positive double." But is that really true? Many developers assume `DBL_MIN` represents the absolute smallest positive value a `double` ...
🌐
Brainly
brainly.com › computers and technology › high school › what is the smallest positive number that can be stored in an ieee-754 double-precision floating point value?
[FREE] What is the smallest positive number that can be stored in an IEEE-754 double-precision floating point - brainly.com
The IEEE-754 standard and the cumulative information about floating-point representations confirm that the smallest positive normalized value achievable in a double-precision format is indeed approximately 2.2250738585072014×10−308.
🌐
John D. Cook
johndcook.com › blog › 2010 › 06 › 08 › c-math-gotchas
C# math gotchas
May 19, 2024 - C has a constant DBL_EPSILON for the smallest positive double precision number x such that 1 + x does not equal 1 in machine precision. Typically a double has about 15 figures of precision, and so DBL_EPSILON is on the order of 10^−16.
Top answer
1 of 2
23

.Machine$double.xmin gives the value of the smallest positive number whose representation meets the requirements of IEEE 754 technical standard for floating point computation. As is mentioned in the Wikipedia article on double-precision floating point numbers, that standard requires that:

If a decimal string with at most 15 significant digits is converted to IEEE 754 double precision representation and then converted back to a string with the same number of significant digits, then the final string should match the original. If an IEEE 754 double precision is converted to a decimal string with at least 17 significant digits and then converted back to double, then the final number must match the original.

The same article goes on to note that, by compromising precision, even smaller positive numbers (which do not meet the standards' precision requirements) can be represented:

The 11 bit width of the exponent allows the representation of numbers between 10-308 and 10308, with full 15–17 decimal digits precision. By compromising precision, the subnormal representation allows even smaller values up to about 5 × 10-324.

R's doubles behave in exactly this way, as is noted in the Details section of ?.Machine:

Note that on most platforms smaller positive values than ‘.Machine$double.xmin’ can occur. On a typical R platform the smallest positive double is about ‘5e-324’.

To confirm that that is the smallest positive value that can be represented using R's doubles and to see the cost in loss of precision, try out a few operations like this:

5e-324
# [1] 4.940656e-324
2e-324
# [1] 0
1.4 * 5e-324
# [1] 4.940656e-324
1.6 * 5e-324
# [1] 9.881313e-324
2 of 2
1

Here are some representations using SAS, IEEE 754 Big Endian?

data _null_;
    y=constant('big');
    put y hex16.;
    put y E21.3;
run;quit;

Biggest

7FEFFFFFFFFFFFFF 1.79769313486230E+308

data _null_;
    y=constant('small');
    put y hex16.;
    put y E21.3;
run;quit;

Smallest

0010000000000000 2.22507385850720E-308

I am not sure the smallest because SAS may set aside some values for missings.