package org.invisibletech; import java.nio.ByteBuffer; import java.util.Optional; public class IndicateSign { public static int signOf(double d) { Double validated = Optional.of(d).filter(x -> !Double.isNaN(x)).orElseThrow(() -> new IllegalArgumentException("NaN has no sign.")); byte[] array = ByteBuffer.allocate(Double.BYTES).putDouble(validated).array(); return testSignage(array); } public static int signOf(long l) { byte[] array = ByteBuffer.allocate(Long.BYTES).putLong(l).array(); return testSignage(array); } private static int testSignage(byte[] array) { return (array[0] & 0x80) != 0 ? -1 : 1; } }