package jas.hist;
public class JASHistUtil {
/**
* Round number down (closer to Negative Infinity):
* "order" defines which significant digit is rounded, order >= 0
*
* roundDown(234.5, 0) -> 200.0
* roundDown(234.5, 1) -> 230.0
* roundDown(234.5, 2) -> 234.0
*
*/
public static double roundDown(double x, int order) {
if (Double.isNaN(x) || Double.isInfinite(x) || x == Double.MIN_VALUE) return x;
else if (x < 0) {
return (-1.)*roundUp(Math.abs(x), order);
} else if (x == 0) return x;
double mant = Math.floor(Math.log(x)/Math.log(10.));
double factor = Math.pow(10., (order-mant));
double tmp = Math.floor(x*factor)/factor;
return tmp;
}
/**
* Round number up (closer to Positive Infinity),
* "order" defines which significant digit is rounded, order >= 0
*
* roundUp(234.5, 0) -> 300.0
* roundUp(234.5, 1) -> 240.0
* roundUp(234.5, 2) -> 235.0
*
*/
public static double roundUp(double x, int order) {
if (Double.isNaN(x) || Double.isInfinite(x) || x == Double.MAX_VALUE) return x;
else if (x < 0) {
return (-1.)*roundDown(Math.abs(x), order);
} else if (x == 0) return x;
double mant = Math.floor(Math.log(x)/Math.log(10.));
double factor = Math.pow(10., (order-mant));
double tmp = Math.ceil(x*factor)/factor;
return tmp;
}
}