Java Ceil ceil(double a, int cutOfDigits)

Here you can find the source of ceil(double a, int cutOfDigits)

Description

Modification of Math#ceil(double) taking an additional argument representing the requested accuracy in the following way:
double fac = Math.pow(10, digits);
return fac * Math.ceil(a / fac);

License

Open Source License

Parameter

Parameter Description
a - a value
cutOfDigits - the number of digits to shift the value before and after ceiling

Return

the new value

Declaration

public static double ceil(double a, int cutOfDigits) 

Method Source Code

//package com.java2s;
/**/*from w w w.  j av a 2 s.  co m*/
 * Syncnapsis Framework - Copyright (c) 2012-2014 ultimate
 * 
 * This program is free software; you can redistribute it and/or modify it under the terms of
 * the GNU General Public License as published by the Free Software Foundation; either version
 * 3 of the License, or any later version.
 * 
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
 * without even the implied warranty of MECHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Plublic License along with this program;
 * if not, see <http://www.gnu.org/licenses/>.
 */

public class Main {
    /**
     * Modification of {@link Math#ceil(double)} taking an additional argument representing the
     * requested accuracy in the following way:<br>
     * <code>double fac = Math.pow(10, digits);<br>
     * return fac * Math.ceil(a / fac);</code>
     * 
     * @param a - a value
     * @param cutOfDigits - the number of digits to shift the value before and after ceiling
     * @return the new value
     */
    public static double ceil(double a, int cutOfDigits) {
        double fac = Math.pow(10, cutOfDigits);
        return fac * Math.ceil(a / fac);
    }

    /**
     * {@link Math#ceil(double)}-like operation for integers, e.g.:
     * <ul>
     * <li>1234, 3 --> 2000</li>
     * <li>1234, 2 --> 1300</li>
     * <li>1234, 1 --> 1240</li>
     * </ul>
     * Some "unusual" cases:
     * <ul>
     * <li>1234, 5 --> 100000</li>
     * <li>1234, 4 --> 10000</li>
     * <li>1234, 0 --> 1234</li>
     * <li>1234, -1 --> 1234</li>
     * </ul>
     * 
     * @param a - a value
     * @param cutOfDigits - the number of digits to "cut of"
     * @return the new value
     */
    public static int ceil(int a, int cutOfDigits) {
        if (cutOfDigits <= 0)
            return a;
        int fac = 1;
        while (--cutOfDigits >= 0)
            fac *= 10;
        int ret = (a / fac) * fac;
        if (a > ret)
            ret += fac;
        return ret;
    }
}

Related

  1. ceil(double a)
  2. ceil(double a, double precision)
  3. ceil(double d)
  4. ceil(double d)
  5. ceil(double d, int exp)
  6. ceil(double d, int p)