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.
🌐
Oracle
docs.oracle.com › javase › 7 › docs › api › java › lang › Double.html
Double (Java Platform SE 7 )
If the argument is 0xfff0000000000000L, the result is negative infinity. If the argument is any value in the range 0x7ff0000000000001L through 0x7fffffffffffffffL or in the range 0xfff0000000000001L through 0xffffffffffffffffL, the result is a NaN. No IEEE 754 floating-point operation provided ...
🌐
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 - However, Double.MIN_VALUE is not negative, and understanding why requires a closer look at how floating-point numbers are represented and what Double.MIN_VALUE actually signifies. Double.MIN_VALUE is the smallest positive normalized value that a double can represent in Java.
🌐
Programming.Guide
programming.guide › java › double-min-value-vs-double-min-normal.html
Java: Double.MIN_VALUE vs Double.MIN_NORMAL | Programming.Guide
Double.MIN_VALUE is the overall smallest possible value a double can represent. Double.MIN_NORMAL is the smallest possible value which is still a normal value (i.e. not subnormal).
🌐
Coderanch
coderanch.com › t › 388349 › java › minimum-float-double
minimum float/double (Beginning Java forum at Coderanch)
March 20, 2001 - According to Java in a Nutshell, the range for floats is +/-1.4E-45 to +/-3.4028235E+38 and for doubles is +/-4.9E-324 to +/-1.7976931348623157E+308. So if you're looking for the maximum negative value (in magnitude), I think it'd be safe to simply use the negative of MAX_VALUE.
🌐
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 - 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 argument with higher absolute value is returned.
🌐
Oracle
docs.oracle.com › en › java › javase › 15 › docs › api › › java.base › java › lang › Double.html
Double (Java SE 15 & JDK 15)
If the argument is 0xfff0000000000000L, the result is negative infinity. If the argument is any value in the range 0x7ff0000000000001L through 0x7fffffffffffffffL or in the range 0xfff0000000000001L through 0xffffffffffffffffL, the result is a NaN. No IEEE 754 floating-point operation provided ...