sascha@655: package de.intevation.flys.utils; sascha@655: sascha@655: public class DoubleUtil sascha@655: { sascha@655: public static final double DEFAULT_STEP_PRECISION = 1e6; sascha@655: sascha@655: private DoubleUtil() { sascha@655: } sascha@655: sascha@655: public static final double [] explode(double from, double to, double step) { sascha@655: return explode(from, to, step, DEFAULT_STEP_PRECISION); sascha@655: } sascha@655: sascha@655: public static final double round(double x, double precision) { sascha@655: return Math.round(x * precision)/precision; sascha@655: } sascha@655: sascha@655: public static final double round(double x) { sascha@655: return Math.round(x * DEFAULT_STEP_PRECISION)/DEFAULT_STEP_PRECISION; sascha@655: } sascha@655: sascha@655: public static final double [] explode( sascha@655: double from, sascha@655: double to, sascha@655: double step, sascha@655: double precision sascha@655: ) { sascha@655: double lower = from; sascha@655: sascha@655: double diff = to - from; sascha@655: double tmp = diff / step; sascha@655: int num = (int)Math.abs(Math.ceil(tmp)) + 1; sascha@655: sascha@655: double [] values = new double[num]; sascha@655: sascha@655: if (from > to) { sascha@655: step = -step; sascha@655: } sascha@655: sascha@655: for (int idx = 0; idx < num; idx++) { sascha@655: values[idx] = round(lower, precision); sascha@655: lower += step; sascha@655: } sascha@655: sascha@655: return values; sascha@655: } sascha@655: } sascha@655: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :