org.apache.commons.lang.math學習筆記
在org.apache.commons.lang.math包中,一共有11個類。可以分成四組:
1. 處理分數的Fraction類;
2.處理數值的NumberUtils和IEEE754rUtils類,這里IEEE745r代表的是IEEE 754的標準,是一種浮點數的處理標準。
3.處理隨機數的JVMRandom和RandomUtils類。
4.處理數值范圍的Range, DoubleRange, FloatRange, IntRange, LangRange, NumberRange類。
Fraction類能很方便地處理分數,并能進行分數的約分,加減乘除和指數運算以及求相對值。如:
private void FractionDemo() {
Fraction fraction = Fraction.getFraction(0.5);
System.out.println(fraction.getNumerator());
System.out.println(fraction.getDenominator());

fraction = Fraction.getFraction("1/2");
System.out.println(fraction.doubleValue());

fraction = Fraction.getFraction(1, 2);
System.out.println(fraction.doubleValue());

fraction = Fraction.getFraction(1, 1, 2);
System.out.println(fraction.doubleValue());

fraction = Fraction.getFraction(2, 4);
System.out.println(fraction.doubleValue());
fraction = Fraction.getReducedFraction(2, 4);
System.out.println(fraction.doubleValue());

System.out.println(Fraction.getFraction(-1, 2).abs());
System.out.println(Fraction.getFraction(1, -2).abs());
System.out.println(Fraction.getFraction(1, 2).add(
Fraction.getFraction(1, 2)));
System.out.println(Fraction.getFraction(1, 2).subtract(
Fraction.getFraction(1, 2)));
System.out.println(Fraction.getFraction(1, 2).multiplyBy(
Fraction.getFraction(1, 2)));
System.out.println(Fraction.getFraction(1, 2).divideBy(
Fraction.getFraction(1, 2)));
System.out.println(Fraction.getFraction(1, 2).pow(2));
}
NumberUtils的功能相對來說就有點雞肋了,他能通過createXXX(String str)創建各種類型的數值,即使你傳入的參數是0X123這樣代表16進制的數,它也能正確解析出來。同時它還具有獲取數組最大最小數的功能。
private void NumberUtilsDemo() {
System.out.println("Is 0x3F a number? " + NumberUtils.isNumber("0x3F"));
double[] array = { 1.0, 3.4, 0.8, 7.1, 4.6 };
double max = NumberUtils.max(array);
double min = NumberUtils.min(array);
System.out.println("Max of array is: " + max);
System.out.println("Min of array is: " + min);
System.out.println();
}
JVMRandom繼承了java.util.Random類,其功能和Random差不多,只不過封裝了返回不同數據類型的方法而已。而RandomUtils則把JVMRandom的方法靜態化了。
private void RandomUtilsDemo() {
for (int i = 0; i < 5; i++) {
System.out.println(RandomUtils.nextInt(100));
}
System.out.println();
}
Range是一個abstract類,主要處理數值范圍的。DoubleRange, FloatRange, IntRange, LangRange和NumberRange都繼承了Range類,它們差不多,只是處理的數據類型不同而已。所以看一個類的使用方法就等于看了所有類的使用方法。
private void NumberRangeDemo() {
Range normalScoreRange = new DoubleRange(90, 120);
double score1 = 102.5;
double score2 = 79.9;
System.out.println("Normal score range is: " + normalScoreRange);
System.out.println("Is " + score1 + " a normal score? " + normalScoreRange.containsDouble(score1));
System.out.println("Is " + score2 + " a normal score? " + normalScoreRange.containsDouble(score2));
System.out.println(normalScoreRange.overlapsRange(new IntRange(92,119)));
}
1. 處理分數的Fraction類;
2.處理數值的NumberUtils和IEEE754rUtils類,這里IEEE745r代表的是IEEE 754的標準,是一種浮點數的處理標準。
3.處理隨機數的JVMRandom和RandomUtils類。
4.處理數值范圍的Range, DoubleRange, FloatRange, IntRange, LangRange, NumberRange類。
Fraction類能很方便地處理分數,并能進行分數的約分,加減乘除和指數運算以及求相對值。如:































NumberUtils的功能相對來說就有點雞肋了,他能通過createXXX(String str)創建各種類型的數值,即使你傳入的參數是0X123這樣代表16進制的數,它也能正確解析出來。同時它還具有獲取數組最大最小數的功能。









JVMRandom繼承了java.util.Random類,其功能和Random差不多,只不過封裝了返回不同數據類型的方法而已。而RandomUtils則把JVMRandom的方法靜態化了。






Range是一個abstract類,主要處理數值范圍的。DoubleRange, FloatRange, IntRange, LangRange和NumberRange都繼承了Range類,它們差不多,只是處理的數據類型不同而已。所以看一個類的使用方法就等于看了所有類的使用方法。









posted on 2009-01-08 19:43 Brian 閱讀(1284) 評論(0) 編輯 收藏 所屬分類: Jakarta Commons筆記