Math數(shù)學(xué)計(jì)算

java.lang.Math類是在整個(gè)Java之中提供的數(shù)學(xué)計(jì)算的功能類,利用這個(gè)程序功能類可以非常方便的執(zhí)行一些基礎(chǔ)的數(shù)學(xué)計(jì)算:對(duì)數(shù)、三角函數(shù)融求、開方...

這個(gè)類是在JDK1.0提供給用戶使用的哼转,且不提供構(gòu)造方法。

類構(gòu)造方法私有化的原因有兩點(diǎn):

  • 控制當(dāng)前類中的實(shí)例化對(duì)象個(gè)數(shù)钧唐,所謂的單例設(shè)計(jì)模式、多例設(shè)計(jì)模式;
  • 類中沒有提供普通的成員屬性匠襟,并且類中的成員都是static申明钝侠,方法也是采用static聲明。

在Math類的成員里面提供有兩個(gè)公共的成員常量:E酸舍、PI

除了給出的常量之外帅韧,Math類中的方法幾乎都是static定義的方法。

范例:使用Math實(shí)現(xiàn)數(shù)學(xué)公式的調(diào)用


public class Test {

    public static void main(String[] args) throws CloneNotSupportedException {

        System.out.println("[絕對(duì)值]:" + Math.abs(-10.3));

        System.out.println("[最大值]:" + Math.max(10,30));

        System.out.println("[最小值]:" + Math.min(10,30));

        System.out.println("[正弦值]:" + Math.sin(-3.56));

        System.out.println("[對(duì)數(shù)值]:" + Math.log(20));

    }

}

執(zhí)行結(jié)果:

[絕對(duì)值]:10.3
[最大值]:30
[最小值]:10
[正弦值]:0.4063057021444168
[對(duì)數(shù)值]:2.995732273553991

以上的操作是為數(shù)學(xué)中最為常見的計(jì)算公式啃勉。

但是對(duì)于Math類類說里面有一個(gè)比較頭疼的方法忽舟,這個(gè)方法就是進(jìn)行四舍五入的處理操作,此方法定義如下:

public static long round(double a)

但是這個(gè)round()方法的實(shí)現(xiàn)計(jì)算結(jié)果可能和傳統(tǒng)的認(rèn)知是有差別的(需要特別注意淮阐,面試中可能問到)

范例:觀察四舍五入


public class Test {

    public static void main(String[] args) throws CloneNotSupportedException {

        System.out.println("[四舍五入]:" + Math.round(15.1));
        System.out.println("[四舍五入]:" + Math.round(15.51));
        System.out.println("[四舍五入]:" + Math.round(-15.1));
        System.out.println("[四舍五入]:" + Math.round(-15.51));

    }

}

輸出:

[四舍五入]:15
[四舍五入]:16
[四舍五入]:-15
[四舍五入]:-16

在使用Math類實(shí)現(xiàn)四舍五入處理的過程之中叮阅,如果要操作的數(shù)值為負(fù)數(shù),那么這個(gè)時(shí)候如果小數(shù)點(diǎn)的內(nèi)容超過了“0.5”枝嘶,則會(huì)自動(dòng)進(jìn)行進(jìn)位處理帘饶。

雖然在Math類中提供有四舍五入的出來方法,可是這個(gè)四舍五入的處理方法會(huì)將全部的小數(shù)位進(jìn)行整體的進(jìn)位處理群扶,這樣的處理模式一定是存在問題的及刻。

例如:有一家公司每年的收入都是以億為單位的,今年的收入達(dá)到了3.467212億竞阐,如果說使用的Math.round()方法實(shí)現(xiàn)了四舍五入缴饭,最終就表示只有3億的收入,那么請(qǐng)問其余的4000多萬那里去了骆莹?如果想要解決這樣的問題就需要開發(fā)者自己去定義一個(gè)新的四舍五入的處理方法颗搂。

范例:實(shí)現(xiàn)自定義四舍五入操作

/**
 * 該類是自定義的數(shù)學(xué)工具類
 */
class MathUtil {

    private MathUtil() {
    }       //不存在成員屬性,構(gòu)造方法私有化


    /**
     * 進(jìn)行準(zhǔn)確位數(shù)的四舍五入操作
     *
     * @param num   表示要進(jìn)行處理的數(shù)字
     * @param scale 表示要保留的小數(shù)位數(shù)
     * @return 處理后的結(jié)果
     */
    public static double round(double num, double scale) {

        return Math.round(num * Math.pow(10.0, scale)) / Math.pow(10, scale);

    }

}


public class Test {

    public static void main(String[] args) throws CloneNotSupportedException {

        System.out.println(MathUtil.round(15.254521,3));

    }

}

執(zhí)行結(jié)果:

15.255

在本工具類里面最終還是依靠Math類實(shí)現(xiàn)了四舍五入的操作幕垦,在Math類中由于round()方法不保留小數(shù)丢氢,所以讓數(shù)據(jù)進(jìn)行一個(gè)整倍的擴(kuò)充傅联,隨后在計(jì)算完成之后再除以相應(yīng)的倍數(shù),就得到了正確的四舍五入結(jié)果疚察。

這種四舍五入的實(shí)現(xiàn)思想不僅僅是用于Java技術(shù)上蒸走,實(shí)際上各個(gè)語言都有同樣的操作實(shí)現(xiàn),理解思路最為重要貌嫡。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末比驻,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子岛抄,更是在濱河造成了極大的恐慌别惦,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件夫椭,死亡現(xiàn)場離奇詭異掸掸,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)益楼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門猾漫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來点晴,“玉大人感凤,你說我怎么就攤上這事×6剑” “怎么了陪竿?”我有些...
    開封第一講書人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長屠橄。 經(jīng)常有香客問我族跛,道長,這世上最難降的妖魔是什么锐墙? 我笑而不...
    開封第一講書人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任礁哄,我火速辦了婚禮,結(jié)果婚禮上溪北,老公的妹妹穿的比我還像新娘桐绒。我一直安慰自己,他們只是感情好之拨,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開白布茉继。 她就那樣靜靜地躺著,像睡著了一般蚀乔。 火紅的嫁衣襯著肌膚如雪烁竭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,624評(píng)論 1 305
  • 那天吉挣,我揣著相機(jī)與錄音派撕,去河邊找鬼婉弹。 笑死,一個(gè)胖子當(dāng)著我的面吹牛终吼,可吹牛的內(nèi)容都是我干的马胧。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼衔峰,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼佩脊!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起垫卤,我...
    開封第一講書人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤威彰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后穴肘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體歇盼,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年评抚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了豹缀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡慨代,死狀恐怖邢笙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情侍匙,我是刑警寧澤氮惯,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站想暗,受9級(jí)特大地震影響妇汗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜说莫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一杨箭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧储狭,春花似錦互婿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至稻艰,卻和暖如春懂牧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來泰國打工僧凤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留畜侦,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓躯保,卻偏偏與公主長得像旋膳,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子途事,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355