23. Getting integral and fractional parts from a double
You know those problems that are very easy if you know the solution and seem very difficult if you don’t? This is exactly that kind of a problem. The solution is quite simple, as you can see in the following code:
double value = -9.33543545;
double fractionalPart = value % 1;
double integralPart = value - fractionalPart;
This was easy; I don’t think you need further explanations. But this approach is not quite accurate. I mean, the integral part is -9, but this returns -9.0. Also, the fractional part is -0.33543545, but the returned value is -0.3354354500000003.
If we need a more accurate result, then using BigDecimal
is more useful:
BigDecimal bd = BigDecimal.valueOf(value);
int integralPart = bd.intValue();
double fractionalPart = bd.subtract(
BigDecimal.valueOf(integralPart)).doubleValue();
This time, the results are -9 and -0.33543545.