NumberUtils.java Source code

Java tutorial

Introduction

Here is the source code for NumberUtils.java

Source

/*
 * Copyright (c) 2003 - 2007 OpenSubsystems s.r.o. Slovak Republic. All rights reserved.
 * 
 * Project: OpenSubsystems
 * 
 * $Id: NumberUtils.java,v 1.9 2007/01/07 06:14:01 bastafidli Exp $
 * 
 * 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; version 2 of the License. 
 * 
 * This program 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 this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
 */

import java.text.NumberFormat;

/**
 * Collection of useful utilities to work with numbers. 
 * 
 * @version $Id: NumberUtils.java,v 1.9 2007/01/07 06:14:01 bastafidli Exp $
 * @author Peter Satury
 * @code.reviewer Miro Halas
 * @code.reviewed Initial revision
 */
public final class NumberUtils {
    // Constants ////////////////////////////////////////////////////////////////

    /**
     * Static array used to append leading 0 chars to file name constructed from
     * number.
     */
    protected static final char[] ZEROCHARS = { '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
            '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
            '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', };

    // Cached values ////////////////////////////////////////////////////////////

    /**
     * static Number format for no Exponent 
     */
    public static final NumberFormat NFFORMAT;

    /**
     * static Number format for no Exponent for editing
     */
    public static final NumberFormat NFFORMATEDIT;

    /**
     * static Number format for Currency
     */
    public static final NumberFormat NFCURRENCYFORMAT;

    /**
     * static Number format for Currency for editing
     */
    public static final NumberFormat NFCURRENCYFORMATEDIT;

    // Constructors /////////////////////////////////////////////////////////////

    /**
     * Static initializer.
     */
    static {

        NFFORMAT = NumberFormat.getNumberInstance();
        NFFORMAT.setMaximumFractionDigits(20);

        NFFORMATEDIT = NumberFormat.getNumberInstance();
        NFFORMATEDIT.setMaximumFractionDigits(20);
        NFFORMATEDIT.setGroupingUsed(false);

        NFCURRENCYFORMAT = NumberFormat.getNumberInstance();
        NFCURRENCYFORMAT.setMaximumFractionDigits(2);
        NFCURRENCYFORMAT.setMinimumFractionDigits(2);

        NFCURRENCYFORMATEDIT = NumberFormat.getNumberInstance();
        NFCURRENCYFORMATEDIT.setMaximumFractionDigits(2);
        NFCURRENCYFORMATEDIT.setMinimumFractionDigits(2);
        NFCURRENCYFORMATEDIT.setGroupingUsed(false);

    }

    /** 
     * Private constructor since this class cannot be instantiated
     */
    private NumberUtils() {
        // Do nothing
    }

    // Public methods ///////////////////////////////////////////////////////////

    /**
     * Method to make Exponention
     * 
     * @param iBbase - base of Exponention [1..]
     * @param iExponent - exponent of Exponention [0..14]
     * @return long - result of Exponention
     * @throws IllegalArgumentException - in case of arguments out of valid range
     */
    public static long exponentiate(int iBbase, int iExponent) throws IllegalArgumentException {
        if (iExponent > 14 || iExponent < 0) {
            throw new IllegalArgumentException("Exponent could not be greater then 14 and lower then 0");
        }
        if (iBbase < 1) {
            throw new IllegalArgumentException("Exponentiate base could not be lower then 1");
        }
        long lReturn = 1;
        for (int iCounter = 0; iCounter < iExponent; iCounter++) {
            try {
                lReturn = lReturn * iBbase;
            } catch (Exception eExc) {
                throw new IllegalArgumentException("Exponentiate arguments too high");
            }
        }
        return lReturn;
    }

    /**
     * Method to make specified length digit number string representation from particular 
     * input number.
     * For example, if there will be send input number 32 and digit lenhth = 8, output 
     * will be string '00000032'
     * 
     * @param iInputNumber - input number that will be converted into 8 digit number 
     *                       string representation
     * @param iDigitLength - length of the output digit number string
     * 
     * @return String - digit number string representation
     */
    public static String getDigitNumberString(int iInputNumber, int iDigitLength) {
        StringBuffer idString = new StringBuffer(Integer.toString(iInputNumber));

        if (iDigitLength - idString.length() > 0) {
            idString.insert(0, ZEROCHARS, 0, iDigitLength - idString.length());
        }

        return idString.toString();
    }
}