最爱Java

书山有路勤为径,学海无涯苦作舟

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(12);
        System.out.println(fraction.doubleValue());

        fraction 
= Fraction.getFraction(112);
        System.out.println(fraction.doubleValue());

        fraction 
= Fraction.getFraction(24);
        System.out.println(fraction.doubleValue());
        fraction 
= Fraction.getReducedFraction(24);
        System.out.println(fraction.doubleValue());

        System.out.println(Fraction.getFraction(
-12).abs());
        System.out.println(Fraction.getFraction(
1-2).abs());
        System.out.println(Fraction.getFraction(
12).add(
                Fraction.getFraction(
12)));
        System.out.println(Fraction.getFraction(
12).subtract(
                Fraction.getFraction(
12)));
        System.out.println(Fraction.getFraction(
12).multiplyBy(
                Fraction.getFraction(
12)));
        System.out.println(Fraction.getFraction(
12).divideBy(
                Fraction.getFraction(
12)));
        System.out.println(Fraction.getFraction(
12).pow(2));
    }

    NumberUtils的功能相对来说就有点鸡肋了,他能通过createXXX(String str)创建各种类型的数值,即使你传入的参数是0X123这样代表16进制的数,它也能正确解析出来。同时它还具有获取数组最大最小数的功能。
    private void NumberUtilsDemo() {
        System.out.println(
"Is 0x3F a number? " + NumberUtils.isNumber("0x3F"));
        
double[] array = 1.03.40.87.14.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(90120);
        
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)));
    }

posted on 2009-01-08 19:43 Brian 阅读(1265) 评论(0)  编辑  收藏 所属分类: Jakarta Commons笔记


只有注册用户登录后才能发表评论。


网站导航:
 

公告


导航

<2009年1月>
28293031123
45678910
11121314151617
18192021222324
25262728293031
1234567

统计

常用链接

留言簿(4)

随笔分类

随笔档案

收藏夹

搜索

最新评论

阅读排行榜

评论排行榜