restofwaterimpのぎじゅつMemo

SIerに所属。企画から運用まで幅広くやってます。C#中心に書いてます。

BigDecimal型で整数部分だけを扱いたい場合

仕事のプログラムで

入力項目が整数7桁小数1桁

出力項目が整数7桁

の仕組みでかつ、入力項目が整数値の場合のみ、出力項目へ

遷移させるという仕様にであった。

ともに使う属性はDecimalで実施する。

 

入力項目の入力チェックをかけたあとに値の遷移をさせようとするのだが、

入力項目に小数が入っているという制約に困ったので、以下のソースのようにして

対応。

 

import java.math.BigDecimal;

 

 

public class DecimalClass {

 

/**

* @param args

*/

public static void main(String[] args) {

int num = 456;

BigDecimal num2 = new BigDecimal(12345.12);

BigDecimal num3 = num2.setScale(0,BigDecimal.ROUND_DOWN);

//Remain

System.out.println("int num = " + num);

System.out.println("decimal num = " + num2);

 

 

//小数を落としたもの

System.out.println("小数落としたもの = " + num3);

 

}

 

 

}

 

出力結果

 

int num = 456

decimal num = 12345.120000000000800355337560176849365234375

 

小数落としたもの = 12345

 

 

こうやってすると、Decimalでも整数部だけで対応できるんだなと。

やりながらよっしゃと思ってしまった。。。便利だな〜〜と。