001package com.hfg.math;
002
003
004import com.hfg.exception.InvalidValueException;
005
006//------------------------------------------------------------------------------
007/**
008 Percent object bounded by 0 <=  value >= 100.
009
010 @author J. Alex Taylor, hairyfatguy.com
011 */
012//------------------------------------------------------------------------------
013// com.hfg XML/HTML Coding Library
014//
015// This library is free software; you can redistribute it and/or
016// modify it under the terms of the GNU Lesser General Public
017// License as published by the Free Software Foundation; either
018// version 2.1 of the License, or (at your option) any later version.
019//
020// This library is distributed in the hope that it will be useful,
021// but WITHOUT ANY WARRANTY; without even the implied warranty of
022// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
023// Lesser General Public License for more details.
024//
025// You should have received a copy of the GNU Lesser General Public
026// License along with this library; if not, write to the Free Software
027// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
028//
029// J. Alex Taylor, President, Founder, CEO, COO, CFO, OOPS hairyfatguy.com
030// jataylor@hairyfatguy.com
031//------------------------------------------------------------------------------
032
033public class Percent
034{
035   private float mValue;
036
037   //###########################################################################
038   // CONSTRUCTORS
039   //###########################################################################
040
041   //--------------------------------------------------------------------------
042   public Percent(float inValue)
043   {
044      setValue(inValue);
045   }
046
047   //--------------------------------------------------------------------------
048   public Percent(double inValue)
049   {
050      setValue((float)inValue);
051   }
052
053   //--------------------------------------------------------------------------
054   public Percent(int inValue)
055   {
056      setValue(inValue);
057   }
058
059   //###########################################################################
060   // PUBLIC METHODS
061   //###########################################################################
062
063   //--------------------------------------------------------------------------
064   public int intValue()
065   {
066      return (int) mValue;
067   }
068
069   //--------------------------------------------------------------------------
070   public float getValue()
071   {
072      return mValue;
073   }
074
075   //--------------------------------------------------------------------------
076   @Override
077   public String toString()
078   {
079      return String.format("%.2f%%", mValue);
080   }
081
082   //###########################################################################
083   // PRIVATE METHODS
084   //###########################################################################
085
086   //--------------------------------------------------------------------------
087   private void setValue(float inValue)
088   {
089      if (inValue < 0)
090      {
091         throw new InvalidValueException("The percent value cannot be less than 0!");
092      }
093      else if (inValue > 100)
094      {
095         throw new InvalidValueException("The percent value cannot be greater than 100!");
096      }
097
098      mValue = inValue;
099   }
100}