/*
 * Decode.java
 *
 * Created on 2007/03/17, 0:05
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package org.itscool.stylist.function;

/**
 * 数値演算用EL関数
 * @author KANO
 */
public class MathC {
   /**
    * 2つの引数の和を返します
    * @param a 数値
    * @param b 数値
    * @return aとbの和を返します
    */
   public int add(int a, int b){
       return a + b;
   }
   
   /**
    * 2つの引数の差を返します
    * @param a 数値
    * @param b 数値
    * @return aとbの差を返します
    */
   public int sub(int a, int b){
       return a - b;
   }
   
   /**
    * 2つの引数の乗算結果を返します
    * @param a 数値
    * @param b 数値
    * @return aとbの乗算結果を返します
    */
   public int kakeru(int a, int b){
       return a * b;
   }
   
   /**
    * 2つの引数のmodを返します
    * @param a 数値
    * @param b 数値
    * @return aとbのmodを返します
    */
   public int mod(int a, int b){
       return a % b;
   }
   
   /**
    * 2つの引数の乗算結果を返します
    * @param a 数値
    * @param b 数値
    * @return aとbの乗算結果を返します
    */
   public String kakeru(int a, double b, int keta){
        return kakeru((double)a, (double)b, keta);
   }
   
   /**
    * 2つの引数の乗算結果を返します
    * @param a 数値
    * @param b 数値
    * @param keta 乗算結果を表示する桁数
    * @return aとbの乗算結果を返します
    */
   public String kakeru(double a, int b, int keta){
        return kakeru((double)a, (double)b, keta);
   }
   
   /**
    * 2つの引数の乗算結果を返します
    * @param a 数値
    * @param b 数値
    * @param keta 乗算結果を表示する桁数
    * @return aとbの乗算結果を返します
    */
   public String kakeru(double a, double b, int keta){
       double result = a * b;
       String str = String.valueOf(result);
       int dotIndex = str.indexOf(".");
       //小数点が存在する場合は桁数に含めない
       if( dotIndex >=0 && dotIndex < keta){
           dotIndex = 1;
       }else{
           dotIndex = 0;
       }
       if( str.length() > (keta+dotIndex)){
           str = str.substring(0, (keta+dotIndex));
       }
       return str;
   }
   
   /**
    * 2つの引数の除算結果を返します
    * @param a 数値
    * @param b 数値
    * @return aとbの除算結果を返します
    */
   public int waru(int a, int b){
       return a / b;
   }
   
   /**
    * 2つの引数の除算結果を返します
    * @param a 数値
    * @param b 数値
    * @param keta 除算結果を表示する桁数
    * @return aとbの除算結果を返します
    */
   public String waru(int a, int b, int keta){
       return waru((double)a, (double)b, keta);
   }
   
   /**
    * 2つの引数の除算結果を返します
    * @param a 数値
    * @param b 数値
    * @param keta 除算結果を表示する桁数
    * @return aとbの除算結果を返します
    */
   public String waru(double a, int b, int keta){
       return waru((double)a, (double)b, keta);
   }
   
   /**
    * 2つの引数の除算結果を返します
    * @param a 数値
    * @param b 数値
    * @param keta 除算結果を表示する桁数
    * @return aとbの除算結果を返します
    */
   public String waru(double a, double b, int keta){
       double result = (double)((double)a / (double)b);
       String str = String.valueOf(result);
       int dotIndex = str.indexOf(".");
       //小数点が存在する場合は桁数に含めない
       if( dotIndex >=0 && dotIndex < keta){
           dotIndex = 1;
       }else{
           dotIndex = 0;
       }
       if( str.length() > (keta+dotIndex)){
           str = str.substring(0, (keta+dotIndex));
       }
       return str;
   }
}
