Java Number Round roundSignificant(double d, int numDigit, boolean keepInteger)

Here you can find the source of roundSignificant(double d, int numDigit, boolean keepInteger)

Description

Round specified value to specified number of significant digit.
If keepInteger is true then integer part of number is entirely conserved.

License

Open Source License

Declaration

public static double roundSignificant(double d, int numDigit, boolean keepInteger) 

Method Source Code

//package com.java2s;
/*//  w  ww .j  a  va 2 s . c  o m
 * Copyright 2010, 2011 Institut Pasteur.
 * 
 * This file is part of ICY.
 * 
 * ICY 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
 * (at your option) any later version.
 * 
 * ICY is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY 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 Public License
 * along with ICY. If not, see <http://www.gnu.org/licenses/>.
 */

public class Main {
    /**
     * Round specified value to specified number of significant digit.<br>
     * If keepInteger is true then integer part of number is entirely conserved.
     */
    public static double roundSignificant(double d, int numDigit, boolean keepInteger) {
        final double digit = Math.ceil(Math.log10(Math.abs(d)));
        if ((digit >= numDigit) && keepInteger)
            return Math.round(d);

        final double pow = Math.pow(10, numDigit - digit);
        return Math.round(d * pow) / pow;
    }

    /**
     * Round specified value to specified number of significant digit.
     */
    public static double roundSignificant(double d, int numDigit) {
        return roundSignificant(d, numDigit, false);
    }

    /**
     * Round specified value to specified number of decimal.
     */
    public static double round(double d, int numDecimal) {
        final double pow = Math.pow(10, numDecimal);
        return Math.round(d * pow) / pow;
    }
}

Related

  1. roundScale(double value, int scale)
  2. roundScale2(Number number)
  3. roundSec(int sec)
  4. roundSec(long milli)
  5. roundSig(double d, int n)
  6. roundSignificant(double value)
  7. roundSimpleNumberUnits(final long graphDefaultUnit)
  8. roundSizes(float[] sizes)
  9. roundSonekiSuii(double amount1, double amount2)