== Why is this an issue? `Double.longBitsToDouble` converts the bit pattern into its corresponding floating-point representation. The method expects a 64-bit long argument to interpret the bits as a double value correctly. When the argument is a smaller data type, the cast to `long` may lead to a different value than expected due to the interpretation of the most significant bit, which, in turn, results in `Double.longBitsToDouble` returning an incorrect value. === Noncompliant code example [source,java,diff-id=1,diff-type=noncompliant] ---- int i = 0x80003800; Double.longBitsToDouble(i); // Noncompliant - NaN ---- === Compliant solution [source,java,diff-id=1,diff-type=compliant] ---- long i = 0x80003800L; Double.longBitsToDouble(i); // Compliant - 1.0610049784E-314 ---- == Resources === Documentation * https://docs.oracle.com/en/java/javase/20/docs/api/java.base/java/lang/Double.html#doubleToLongBits(double)[Oracle Java SE - Double.doubleToLongBits] === Articles & blog posts * https://en.wikipedia.org/wiki/Double-precision_floating-point_format[Wikipedia - Double Precision floating point format] * https://en.wikipedia.org/wiki/Single-precision_floating-point_format[Wikipedia - Single Precision floating point format] ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) === Message Remove this "Double.longBitsToDouble" call. ''' == Comments And Links (visible only on this page) === on 10 Oct 2014, 14:07:37 Freddy Mallet wrote: Perfect ! endif::env-github,rspecator-view[]