Java tutorial
/* * 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(); } }