The IEEE 754 format has one bit reserved for the sign and the remaining bits representing the magnitude. This means that it is "symmetrical" around origo (as opposed to the Integer values, which have one more negative value). Thus the minimum value is simply the same as the maximum value, with the sign-bit flipped, so yes, -Double.MAX_VALUE is the lowest actual number you can represent with a double.

I suppose the Double.MAX_VALUE should be seen as maximum magnitude, in which case it actually makes sense to simply write -Double.MAX_VALUE. It also explains why Double.MIN_VALUE is the least positive value (since that represents the least possible magnitude).

But sure, I agree that the naming is a bit misleading. Being used to the meaning Integer.MIN_VALUE, I too was a bit surprised when I read that Double.MIN_VALUE was the smallest absolute value that could be represented. Perhaps they thought it was superfluous to have a constant representing the least possible value as it is simply a - away from MAX_VALUE :-)

(Note, there is also Double.NEGATIVE_INFINITY but I'm disregarding from this, as it is to be seen as a "special case" and does not in fact represent any actual number.)

Here is a good text on the subject.

Answer from aioobe on Stack Overflow
Top answer
1 of 6
226

The IEEE 754 format has one bit reserved for the sign and the remaining bits representing the magnitude. This means that it is "symmetrical" around origo (as opposed to the Integer values, which have one more negative value). Thus the minimum value is simply the same as the maximum value, with the sign-bit flipped, so yes, -Double.MAX_VALUE is the lowest actual number you can represent with a double.

I suppose the Double.MAX_VALUE should be seen as maximum magnitude, in which case it actually makes sense to simply write -Double.MAX_VALUE. It also explains why Double.MIN_VALUE is the least positive value (since that represents the least possible magnitude).

But sure, I agree that the naming is a bit misleading. Being used to the meaning Integer.MIN_VALUE, I too was a bit surprised when I read that Double.MIN_VALUE was the smallest absolute value that could be represented. Perhaps they thought it was superfluous to have a constant representing the least possible value as it is simply a - away from MAX_VALUE :-)

(Note, there is also Double.NEGATIVE_INFINITY but I'm disregarding from this, as it is to be seen as a "special case" and does not in fact represent any actual number.)

Here is a good text on the subject.

2 of 6
14

These constants have nothing to do with sign. This makes more sense if you consider a double as a composite of three parts: Sign, Exponent and Mantissa. Double.MIN_VALUE is actually the smallest value Mantissa can assume when the Exponent is at minimun value before a flush to zero occurs. Likewise MAX_VALUE can be understood as the largest value Mantissa can assume when the Exponent is at maximum value before a flush to infinity occurs.

A more descriptive name for these two could be Largest Absolute (add non-zero for verbositiy) and Smallest Absolute value (add non-infinity for verbositiy).

Check out the IEEE 754 (1985) standard for details. There is a revised (2008) version, but that only introduces more formats which aren't even supported by java (strictly speaking java even lacks support for some mandatory features of IEEE 754 1985, like many other high level languages).

🌐
Tutorialspoint
tutorialspoint.com › java › lang › math_min_double.htm
Java - Math min(double x, double y) Method
The following example shows the usage of Math min() method of negative values. package com.tutorialspoint; public class MathDemo { public static void main(String[] args) { // get two double numbers double x = -60984.1; double y = -497.99; // call min and print the result System.out.println("Math.min(" + x + "," + y + ")=" + Math.min(x, y)); } }
🌐
Programming.Guide
programming.guide › java › integer-minvalue-negative-double-minvalue-positive.html
Java: Why's Double.MIN_VALUE is positive? Integer.MIN_VALUE is negative! | Programming.Guide
Curiously, Double.MIN_VALUE holds the value 2-1074. This is a positive value, as opposed to Integer.MIN_VALUE which holds the negative value -2147483648.
🌐
Codemia
codemia.io › home › knowledge hub › why is double.min_value in not negative
Why is Double.MIN_VALUE in not negative | Codemia
July 30, 2025 - The main takeaway is that Double.MIN_VALUE is distinct from the smallest negative number or even zero. It embodies the smallest positive value a double can represent, serving as a foundation for precision-level computations. Understanding these nuances ensures developers use Java's double type ...
🌐
Oracle
docs.oracle.com › javase › 7 › docs › api › java › lang › Double.html
Double (Java Platform SE 7 )
If the argument is NaN, the result is the string "NaN". Otherwise, the result is a string that represents the sign and magnitude (absolute value) of the argument. If the sign is negative, the first character of the result is '-' ('\u002D'); if the sign is positive, no sign character appears ...
🌐
Coderanch
coderanch.com › t › 388349 › java › minimum-float-double
minimum float/double (Beginning Java forum at Coderanch)
March 20, 2001 - I think the absolute value of the Minimun for each type is one more than the maximum. For example, byte range is -128 to 127. So, you may want to add 1 to Max before you use the negative of it. [This message has been edited by herb slocomb (edited March 21, 2001).] ... Boost this thread! ... Q. on wrapper class Double
🌐
MIT
web.mit.edu › java_v1.0.2 › www › javadoc › java.lang.Double.html
Class java.lang.Double
Since doubles are not objects in Java, they need to be "wrapped" in a Double instance. ... The maximum value a double can have. ... The minimum value a double can have. ... Not-a-Number. ... Negative infinity.
Find elsewhere
🌐
Luasoftware
code.luasoftware.com › tutorials › java › smallest-double-number-for-java
Smallest Double Number For Java - Lua Software Code
java · double · The smallest negative number for Double is -Double.MAX_VALUE · MAX_VALUE: A constant holding the largest positive finite value of type double. 1.7976931348623157E308 · Double.MAX_VALUE.toBigDecimal().toPlainString() Up to 309 digits: 17976931348623157...000 · The smallest ...
🌐
Java2s
java2s.com › example › java-api › java › lang › double › min_value-0.html
Example usage for java.lang Double MIN_VALUE
public static void main(String args[]) { // integers//w w w . j a va2s.c o m byte smallestByte = Byte.MIN_VALUE; short smallestShort = Short.MIN_VALUE; int smallestInteger = Integer.MIN_VALUE; long smallestLong = Long.MIN_VALUE; // real numbers float smallestFloat = Float.MIN_VALUE; double smallestDouble = Double.MIN_VALUE; // display them all System.out.println("The smallest byte value is " + smallestByte); System.out.println("The smallest short value is " + smallestShort); System.out.println("The smallest integer value is " + smallestInteger); System.out.println("The smallest long value is "
🌐
Javatpoint
javatpoint.com › java-double-min-method
Java Double min() Method with Examples
The min() method of Java Double class returns the double having minor value amongst two double values. The result returned is same as by invoking Math.min () method.
🌐
LabEx
labex.io › tutorials › java-java-double-min-method-117625
Mastering the Java Double Min Method | LabEx
In Java, the Double.min() method is used to find the smallest of two double values passed as arguments. It returns the numerically lower value of the two values passed.
🌐
BeginnersBook
beginnersbook.com › 2022 › 10 › java-math-min-method
Java Math.min() Method
October 9, 2022 - public static int min(int a, int ... a, double b); ... Returns the smaller number between a and b. If one argument is positive and other is negative then min() returns negative argument. If the arguments are NaN (Not a Number) then NaN is returned. If both the arguments are negative then the ...
🌐
DocStore
docstore.mik.ua › orelly › java › langref › ch10_08.htm
[Chapter 10] Double
home | O'Reilly's CD bookshelfs | FreeBSD | Linux | Cisco | Cisco Exam