Is there a Java equivalent of the C / C++ function called frexp? If you aren’t familiar, frexp is defined by Wikipedia to “break floating-point number down into mantissa and exponent.”
I am looking for an implementation with both speed and accuracy but I would rather have the accuracy if I could only choose one.
This is the code sample from the first reference. It should make the frexp contract a little more clear:
/* frexp example */
#include <stdio.h>
#include <math.h>
int main ()
{
double param, result;
int n;
param = 8.0;
result = frexp (param , &n);
printf ("%lf * 2^%d = %f\n", result, n, param);
return 0;
}
/* Will produce: 0.500000 * 2^4 = 8.000000 */
How’s this?
This is “inspired” or actually nearly copied identically from an answer to a similar C# question. It works with the bits and then makes the mantissa a number between 1.0 and 0.0.