Esempio n. 1
0
 /**
  * 数字をZZ.ZZ ----> Z9.999のようなフォーマットに変換する
  *
  * @param rate 数字の文字列
  * @return String 変換した文字列 2003/11/07 新規作成 zhanjc
  */
 public static String formatRate(String rate) {
   if (rate == null || "".equals(rate.trim())) {
     return "";
   }
   if (!NumUtil.checkNumberValid(rate)) {
     return rate.trim();
   } else {
     DecimalFormat rateformat = new DecimalFormat("#,##0.000");
     try {
       double numericrate = Double.parseDouble(rate.trim()) + 0.0000000001;
       rate = rateformat.format(numericrate);
       if ("0.000".equals(rate)) {
         return " ";
       } else if (rate.substring(rate.length() - 3, rate.length()).equals("000")) {
         rate = rate.substring(0, rate.length() - 3) + "0";
       } else {
         while (rate.endsWith("0")) {
           rate = rate.substring(0, rate.length() - 1);
         }
       }
     } catch (Exception ex) {
       debugLog.debug("formatRate failed. return the original Data");
     }
   }
   if (rate != null && !"".equals(rate.trim())) {
     rate = rate + "%";
   }
   return rate;
 }
Esempio n. 2
0
 @Test
 public void testGetMax() throws Exception {
   // invalid values
   assertEquals("INF", NumUtil.getMax("acb", "fsdf"));
   assertEquals("22", NumUtil.getMax("acb", "22"));
   assertEquals("-22", NumUtil.getMax("-22", "fdf3fdf22"));
   // two values
   assertEquals("22", NumUtil.getMax("11", "22"));
   assertEquals("11", NumUtil.getMax("11", "11"));
   assertEquals("12.0", NumUtil.getMax("12.0", "11"));
   assertEquals("13", NumUtil.getMax("12.0", "13"));
   // three values
   assertEquals("3", NumUtil.getMax("2", "1", "3"));
   assertEquals("3", NumUtil.getMax("3", "3", "3"));
   assertEquals("22", NumUtil.getMax("22", "3", "22"));
 }
Esempio n. 3
0
  /**
   * 全部ゼロ又はnullの場合 空文字列にして返す
   *
   * @param val 変換する文字列
   * @return 空文字列 valは全部ゼロ又はnull又は空文字列の場合 空文字列にして返す 2003/11/07 新規作成 zhanjc
   */
  public static String filteZero(String val) {
    if (val == null || "".equals(val.trim())) {
      return "";
    }
    if (!NumUtil.checkIntNumberValid(val)) {
      return "";
    }
    val = new Long(val.trim()).toString();

    return val;
  }
Esempio n. 4
0
 /**
  * 数字を906 --> 906%のようなフォーマットに変換する
  *
  * @param number 文字列
  * @return String 変換した文字列 2003/11/07 新規作成 zhanjc
  */
 public static String formatPercentNumber(String number) {
   // ヌル又は空文字列の場合、""を返す
   if (number == null || number.trim().equals("")) {
     return "";
   }
   // 数字の文字列は0又は-0の場合、0を返す
   if (number.trim().equals("0") || number.trim().equals("-0")) {
     return "0";
     // 数字文字列の末に、%を追加して返す。
   } else if (NumUtil.checkNumberValid(number)) {
     return number + "%";
   } else {
     return number.trim();
   }
 }
Esempio n. 5
0
 /**
  * 数字を9999999.99 ----> 9,999,999.99のようなフォーマットに変換する
  *
  * @param number 数字の文字列
  * @param formatToLong 小数を整数に変換する
  * @param nullToZero 空白文字列がゼロに変換処理のフラグ:trueの場合、変換する、falseの場合、変換しない
  * @param zeroToNull ゼロが空白文字列に変換処理のフラグ:trueの場合、変換する、falseの場合、変換しない
  * @return String 変換した文字列 2003/11/07 新規作成 zhanjc
  * @throws Exception
  */
 public static String formatNumber(
     String number, boolean formatToLong, boolean nullToZero, boolean zeroToNull)
     throws Exception {
   if (number == null || number.trim().equals("")) {
     if (nullToZero == true) {
       return "0";
     } else {
       return "";
     }
   }
   // 数字の文字列が0または-0の場合、zeroToNullによって、""或いは"0"を返す
   if (number.trim().equals("0") || number.trim().equals("-0")) {
     if (zeroToNull == true) {
       return "";
     } else {
       return "0";
     }
   }
   // 数字値の検査関数を呼び出す
   if (NumUtil.checkNumberValid(number) == false) {
     return number.trim();
   }
   String sFormatNumber = "";
   double dbNum;
   // 数字の文字列を指定した形式で数値に変換する
   NumberFormat defForm = new DecimalFormat(FORMAT_TEXT);
   try {
     dbNum = Double.parseDouble(number);
     if (formatToLong == true) {
       dbNum = Math.round(dbNum);
     }
     sFormatNumber = defForm.format(dbNum); // 書式化
   } catch (NumberFormatException numEx) {
     try {
       // 99,9999,9 --> 99,999,999
       Number numNumber = NumberFormat.getNumberInstance().parse(number);
       dbNum = Double.parseDouble(String.valueOf(numNumber));
       if (formatToLong == true) {
         dbNum = Math.round(dbNum);
       }
       sFormatNumber = defForm.format(dbNum);
     } catch (ParseException pEx) {
       throw new Exception("FW096");
     }
   }
   return convertToValid(sFormatNumber);
 }
Esempio n. 6
0
  /**
   * 数字を9999999.99 ----> 9,999,999.99(千円)、あるいは9999999.99 ----> 9,999,999.99(万円)
   * のようなフォーマットに変換し、結果の文字列を返す
   *
   * @param number 変換する文字列 0 --> "" || 0
   * @param suffix 接尾辞のフラグ:1は千円、その他は万円
   * @param needProcess 処理の制御フラグ: true 1.千円 9999999.99 ----> 9,999.99(千円) 2.万円 9999999.99 ---->
   *     999.99(万円) その他 円 9999999.99 ----> 9999999.99(円) false 1.千円 9999999.99 ---->
   *     9,999,999.99(千円) 2.万円 9999999.99 ----> 9,999,999.99(万円) その他 円 9999999.99 ---->
   *     9999999.99(円)
   * @param hasSuffix 接尾辞の制御フラグ:trueは有り、falseは無し
   * @param formatToLong 格式化の制御フラグ: true 9999999.99 ----> 10,000,000 false 9999999.99 ---->
   *     9,999,999.99
   * @param zeroToNull ゼロ変換の制御フラグ:trueの場合、0は空文字列に変換する。 falseの場合、変換しない
   * @return String 変換後の文字列 2003/11/06 新規作成 zhanjc
   * @throws Exception
   */
  public static String formatCurrency(
      String number,
      int suffix,
      boolean needProcess,
      boolean hasSuffix,
      boolean formatToLong,
      boolean zeroToNull)
      throws Exception {
    // ヌル又は空文字列の場合、""を返す
    if (number == null || number.trim().equals("")) {
      return "";
    }
    if (number.trim().equals("0") || number.trim().equals("-0")) {
      if (zeroToNull == true) {
        return "";
      }
    }
    // 数字値の検査関数を呼び出す
    if (NumUtil.checkNumberValid(number) == false) {
      return number.trim();
    }
    String currencySuffix = "";
    String currency = "";
    int times;
    // suffixによって、"千円"又は"万円"を追加する
    if (suffix == 1) {
      if (hasSuffix == true) {
        currencySuffix = "千円";
      }
      times = 1000;
    } else if (suffix == 2) {
      if (hasSuffix == true) {
        currencySuffix = "万円";
      }
      times = 10000;
    } else {
      if (hasSuffix == true) {
        currencySuffix = "円";
      }
      times = 1;
    }
    // formatToLongのように
    double num;
    NumberFormat defForm = new DecimalFormat(FORMAT_TEXT);
    if (needProcess == true) {
      try {
        // numberをtimesで割って、計算結果を返す
        num = devideTimes(number, times); // throw
        // NumberFormatException
        if (formatToLong == true) {
          num = Math.round(num);
        }
        currency = defForm.format(num);
      } catch (NumberFormatException numEx) {
        try {
          // 数字を通貨のフォーマットに変換する
          Number numNumber = NumberFormat.getNumberInstance().parse(number);
          num = devideTimes(String.valueOf(numNumber), times);
          if (formatToLong == true) {
            num = Math.round(num);
          }
          currency = defForm.format(num);
        } catch (ParseException pEx) {
          throw new Exception("FW095");
        }
      }
    } else {
      currency = formatNumber(number, formatToLong);
    }

    return convertToValid(currency) + currencySuffix;
  }