ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

Javaで基本操作(その3):数字表現(0を前に付ける等)の1.5以前、以降の違い

2006-08-25 15:11:48 | JavaとWeb

Javaで基本操作シリーズその3、もう、前回にもちょっと出てきてしまっているのですが、数字の表現。

 数字のカンマつき、0を前に付ける等といった話は、Java1.5でチョー便利機能、String.formatとSystem.out.printfが入ったんで、それ以前、それ以降(つまり、2つの機能を使った場合)で分けて話たほうがいいとおもいます。

 ということで、まず、Java1.5以前から




■Java1.5以前-NumberFormatを使って。。
●概要
 java.text.NumberFormatっていうのがあって、そいつを使うと、前0とか、小数点以下何桁とかできます。

・前0は、setMinimumIntegerDigits(最小桁数)メソッドです。この場合、最小桁数に満たない桁には前に0がつきます。
・カンマの指示は、setGroupingUsed(true)メソッドで、カンマつき、trueをfalseにすると、カンマなしになります。
・小数点の桁数を揃えるにはsetMinimumFractionDigits(桁数)メソッドです。この桁数以下の場合、0がつきます。
・小数点以下を丸めるにはsetMaximumFractionDigits(桁数)メソッドです。それ以上の小数点以下の桁数だと、四捨五入します。

これらの指示の仕方は
1.NumberFormat nf = NumberFormat.getInstance();でオブジェクト取得
  (newではない)
2.上記メソッドを使っていろいろ設定(複数組み合わせてもOK)
3.String test = nf.format(値);で、値を2の条件で変換した結果
  (文字列)を返します

・新しく設定しなおしたい場合は、またNumberFormat.getInstance()して、オブジェクトを取得しなおしてね!じゃないと前の設定が生きてるよ(^^)

くわしくは、このページが分かりやすいと思う

http://www.geocities.jp/h2fujimura/appendix/text/NumberFormat/index.html


●サンプルソース
 こんなかんじ。
import java.util.*;
import java.text.*;

/*
 *  数字のフォーマットテスト
 */
public class test {
	/*
	 * 	メイン処理(呼び出し元)
	 */
	public static void main(String[] args) {
		//	まず、フォーマット操作をしたいなら、
		//	NumberFormatをもらわないといけない
		NumberFormat nf = NumberFormat.getInstance();
		
		//	数字のあたまに0を付ける
		nf.setMinimumIntegerDigits(5);	// 最低5桁
		String test1 = nf.format(5);
		System.out.println("0をつける :" + test1);

		//	カンマを消したい
		nf.setGroupingUsed(false);
		test1 = nf.format(5);
		System.out.println("カンマを消す :" + test1);
		
		//	小数点を指定した桁数に必ずする
		//	最低小数点以下3桁=2桁以下なら0がつく
		nf.setMinimumFractionDigits(3);
		String test2 = nf.format(25.4);
		System.out.println("3桁 :" + test2);

		
		//	小数点をある桁以下、捨てる
		//	もう一回つくりなおし
		NumberFormat nf2 = NumberFormat.getInstance();

		//	最低小数点以下2桁=3桁以上捨てる
		nf2.setMaximumFractionDigits(2);

		//	切捨てのケース
		String test3 = nf2.format(25.423);
		System.out.println("3桁 25.423 :" + test3);
		
		//	切り上げのケース
		String test4 = nf2.format(25.428);
		System.out.println("3桁 25.428 :" + test4);
	}
}

(上記 < > ¥は本当は半角です)





■Java1.5-String.format等を使って。。
●概要
 しかし、Java1.5に、System.out.printf,String.formatが入ったことで、こんな面倒なことをしなくてよくなった(なお、System.out.printfと書いているが、別にSystem.out.である必要はなく、PrintStreamなら、printfメソッドは使える)。

 これらは、Cと同じく、書式を指定すれば、その形で出力してくれたり、文字列に変換してくれる。

くわしくは、ここ
J2SE 5.0の新機能
第4回 書式付き入出力機能(1)――Javaのprintf
http://www.javaworld.jp/technology_and_programming/-/21082-1.html


●サンプルソース
 こんなかんじ。
public class test {

	/**
	 * Java1.5でのテスト
	 */
	public static void main(String[] args) {
		int	   su = 5;

		// 数字のフォーマット
		String test1 = String.format("%03d",su);
		System.out.println("String.formatの利用:"+ test1);

		//printfでいきなり
		System.out.printf("printf 直接指定:%03d¥n",5);

	}

}

(上記 < > ¥は本当は半角です)




 ということで、1.5は便利ではあるので、1.5ベースでのプログラムというのは、どんどん増えてくると思われる。そーすると、1.4,1.3と1.5の混在となるわけだが、この場合の問題点ということについては、また今度、別の機会で書きたいと思います。

この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« iBookも回収、ソニー製リチウ... | トップ | ウィリアムのいたずらのギャ... »
最新の画像もっと見る

JavaとWeb」カテゴリの最新記事