I use doubles for a uniform implementation of some arithmetic calculations. These calculations may be actually applied to integers too, but there are no C++-like templates in Java and I don’t want to duplicate the implementation code, so I simply use “double” version for ints.
Does JVM spec guarantees the correctness of integer operations such a <=,>=, +, -, *, and / (in case of remainder==0) when the operations are emulated as corresponding floating point ops?
(Any integer, of course, has reasonable size to be represented in double’s mantissa)
According to the Java Language Specification:
So you’re guaranteed uniform behaviour, and while I don’t have access to the official IEEE standard document, I’m pretty sure that it implicitly guarantees that operations on integers that can be represented exactly as a float/double work as expected.