Java 小数点位置とかを求めてみる

小数点の位置を求めたい、あるあるだよね~?え?無いですか?

というわけで、今回もJavaのお話です。

レッツトライ~。

 

Java で小数点位置を求めてみる

そんでは、Eclipseで適当に、Javaプロジェクト を作成し、クラスも作成。

f:id:ts0818:20181205234654p:plain

んで、ソースはこんな感じ。 

import java.util.LinkedHashMap;
import java.util.Map;

public class TestNumricToString {
  // splitするときの区切り文字(「,」、「.」で区切ります。)
  private static final String REGEX_AMOUNT = "[,.]";

  public static void main(String[] args) {
    // BigDecimalは、1つしか小数点を使えないっぽいのでNG
    // BigDecimal numericAmount = new BigDecimal("10.8493.3274.1265.4109.6516");

    // 文字列変換
    // String strAmount = numericAmount.toString();

    // 小数点を含む金額
    String strAmount = "10.8493.3274.1265.4109.6516";

    // 文字列分割
    String[] strSplit = strAmount.split(REGEX_AMOUNT);
    // 小数点位置を保存用
    Map<String, Integer> listDecimalPoints = new LinkedHashMap<String, Integer>();
    // 小数点を除く金額を生成用
    StringBuffer strNoDecimalPointsAmount = new StringBuffer();
    int decimalPoint = 0;

    // 小数点桁数を取得
    if(strSplit.length != 0) {
      for(int desc_index = strSplit.length -1, asc_index = 0; desc_index >= 0; desc_index--,asc_index++) {
        // 小数点位置を保存
        if(desc_index > 0) {
          decimalPoint += strSplit[desc_index].length()+1;
          listDecimalPoints.put((asc_index +1) + "-decimal-point", decimalPoint);
        }
        // 文字列分割された金額を連結
        strNoDecimalPointsAmount.append(strSplit[asc_index]);
      }
    }
    // 小数点を除く金額を確認
    System.out.println(strNoDecimalPointsAmount + "円");
    // 小数点位置を確認
    for(Map.Entry<String, Integer> entry: listDecimalPoints.entrySet()) {
      System.out.println(entry.getKey() + "は、"+ entry.getValue() + "桁目です。");
    }

  }

}

そしたらば、実行で。

f:id:ts0818:20181205235012p:plain

で、結果が、コンソールに。

f:id:ts0818:20181205235054p:plain

右端の、小数点を『1-decimal-point』としています。

  

今回も先人の皆々様のお力をお借りしました。

neos21.hatenablog.com

 

qiita.com

 

Java 文字列を分割するサンプル(split) | ITSakura

 

今回はこのへんで。