<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Read Sean

    Read me, read Sean.
    posts - 508, comments - 655, trackbacks - 9, articles - 4

    [Jakarta Commons筆記] org.apache.commons.lang.math

    Posted on 2005-08-01 13:18 laogao 閱讀(3977) 評論(3)  編輯  收藏 所屬分類: On Java

     

    Jakarta Commons中,專門處理數學計算的類分別可以在兩個地方找到:一是Commons Langorg.apache.commons.lang.math包中,二是在Commons Math這個單獨的子項目中。由于后者主要是處理復數、矩陣等,相對使用比較少,在我的筆記中就只簡單講講Commons Lang中的math包。對后者感興趣的可以看看

    http://jakarta.apache.org/commons/math/

     

    org.apache.commons.lang.math包中共有10個類,這些類可以歸納成四組:

    1- 處理分數的Fraction類;

    2- 處理數值的NumberUtils類;

    3- 處理數值范圍的RangeNumberRangeIntRangeLongRangeFloatRangeDoubleRange類;

    4- 處理隨機數的JVMRandomRandomUtils類。

     

    下面我舉個例子分別說明上述四組的使用方法:

     

    package sean.study.jakarta.commons.lang;

     

    import org.apache.commons.lang.ArrayUtils;

    import org.apache.commons.lang.BooleanUtils;

    import org.apache.commons.lang.StringUtils;

    import org.apache.commons.lang.math.DoubleRange;

    import org.apache.commons.lang.math.Fraction;

    import org.apache.commons.lang.math.NumberUtils;

    import org.apache.commons.lang.math.RandomUtils;

    import org.apache.commons.lang.math.Range;

     

    public class LangMathUsage {

     

        public static void main(String[] args) {

            demoFraction();

            demoNumberUtils();

            demoNumberRange();

            demoRandomUtils();

        }

     

        public static void demoFraction() {

            System.out.println(StringUtils.center(" demoFraction ", 30, "="));

            Fraction myFraction = Fraction.getFraction(144, 90);

            // Fraction myFraction = Fraction.getFraction("1 54/90");

            System.out.println("144/90 as fraction: " + myFraction);

            System.out.println("144/90 to proper: " + myFraction.toProperString());

            System.out.println("144/90 as double: " + myFraction.doubleValue());

            System.out.println("144/90 reduced: " + myFraction.reduce());

            System.out.println("144/90 reduced proper: "

                    + myFraction.reduce().toProperString());

            System.out.println();

        }

     

        public static void demoNumberUtils() {

            System.out.println(StringUtils.center(" demoNumberUtils ", 30, "="));

            System.out.println("Is 0x3F a number? "

                    + StringUtils.capitalize(BooleanUtils.toStringYesNo(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);

            String arrayStr = ArrayUtils.toString(array);

            System.out.println("Max of " + arrayStr + " is: " + max);

            System.out.println("Min of " + arrayStr + " is: " + min);

            System.out.println();

        }

     

        public static void demoNumberRange() {

            System.out.println(StringUtils.center(" demoNumberRange ", 30, "="));

            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? "

                    + StringUtils

                            .capitalize(BooleanUtils.toStringYesNo(normalScoreRange

                                    .containsDouble(score1))) + ".");

            System.out.println("Is "

                    + score2

                    + " a normal score? "

                    + StringUtils

                            .capitalize(BooleanUtils.toStringYesNo(normalScoreRange

                                    .containsDouble(score2))) + ".");

            System.out.println();

        }

     

        public static void demoRandomUtils() {

            System.out.println(StringUtils.center(" demoRandomUtils ", 30, "="));

            for (int i = 0; i < 5; i++) {

                System.out.println(RandomUtils.nextInt(100));

            }

            System.out.println();

        }

     

    }

     

    以下是運行結果:

     

    ======== demoFraction ========

    144/90 as fraction: 144/90

    144/90 to proper: 1 54/90

    144/90 as double: 1.6

    144/90 reduced: 8/5

    144/90 reduced proper: 1 3/5

     

    ====== demoNumberUtils =======

    Is 0x3F a number? Yes.

    Max of {1.0,3.4,0.8,7.1,4.6} is: 7.1

    Min of {1.0,3.4,0.8,7.1,4.6} is: 0.8

     

    ====== demoNumberRange =======

    Normal score range is: Range[90.0,120.0]

    Is 102.5 a normal score? Yes.

    Is 79.9 a normal score? No.

     

    ====== demoRandomUtils =======

    75

    63

    40

    21

    92

     

    以上就是Commons Langmath包通常的用法。提一下NumberUtils.inNumber(String)方法,它會正確判斷出給定的字符串是否是合法的數值,而我在前面的筆記中提到的StringUtils.isNumeric(String)只能判斷一個字符串是否是由純數字字符組成。Commons Langmath包的各個類都還有很多實用的方法,遠不止我在例子中用到的這些,如果你感興趣,參照一下Commons LangJavadoc吧。

     

     

    Feedback

    # re: [Jakarta Commons筆記] org.apache.commons.lang.math  回復  更多評論   

    2006-01-15 10:37 by 大嘴巴
    google summer code 上的project,作者是叫zhangxiaogang,是您嗎?

    # re: [Jakarta Commons筆記] org.apache.commons.lang.math  回復  更多評論   

    2006-01-15 21:21 by 大胃
    不是。

    # re: [Jakarta 筆記] org.apache.commons.lang.math[未登錄]  回復  更多評論   

    2012-12-17 14:37 by doctor
    Commons math 或JmathLib,在eclipse中怎么使用,我想寫個將掃描的網格線數據轉換成函數式的工具,現存的不好用,如:getData,FindGraph,engauge,QQ;873128294,zmhhxl@yahoo.com.cn
    主站蜘蛛池模板: 亚洲一久久久久久久久| 无码免费午夜福利片在线| 亚洲AV无码成人精品区狼人影院| 亚洲中文字幕日产乱码高清app| 全免费a级毛片免费**视频| 久久永久免费人妻精品下载| 久久久久国色AV免费观看| 亚洲av永久无码精品网址| 亚洲一卡2卡3卡4卡国产网站| 亚洲AV无码专区亚洲AV伊甸园| 亚洲精品岛国片在线观看| 午夜神器成在线人成在线人免费| 真人做人试看60分钟免费视频 | 永久黄网站色视频免费直播| 每天更新的免费av片在线观看 | 女人张腿给男人桶视频免费版| 曰批全过程免费视频播放网站 | 亚洲高清国产拍精品26U| 亚洲一级特黄大片无码毛片 | 免费毛片毛片网址| 亚洲高清一区二区三区电影| 久久精品国产亚洲av麻豆图片| 亚洲理论片在线观看| 亚洲无删减国产精品一区| 久久亚洲精品AB无码播放| 亚洲bt加勒比一区二区| 亚洲国产精品第一区二区| 亚洲午夜未满十八勿入| 精品亚洲成a人片在线观看少妇| 亚洲国产成人久久精品影视| 亚洲A∨无码一区二区三区| 亚洲国产天堂久久综合网站| 亚洲A∨无码一区二区三区| 亚洲毛片在线观看| 亚洲高清不卡视频| 亚洲另类自拍丝袜第1页| 亚洲一区二区三区在线网站| 亚洲色偷偷色噜噜狠狠99| www亚洲精品久久久乳| 欧亚一级毛片免费看| 精品熟女少妇aⅴ免费久久 |