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

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

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

    about BigDecimal

    在java中做大數(shù)運(yùn)算時(shí)要用到BigDecimal類。
    何謂大數(shù)?
        單精度浮點(diǎn)數(shù):float--32位(4字節(jié))--有效數(shù)字7位;
        雙精度浮點(diǎn)數(shù):double--64位(8字節(jié))--有效數(shù)字16位;
        超過(guò)double表示范圍的,一律用BigDecimal。
    關(guān)于BigDecimal的構(gòu)造,需要從String構(gòu)造,切記不可由double構(gòu)造
        即不可用 new BigDecimal(double var) [X]
        而是通過(guò) new BigDecimal(String var)
        原因參考http://hi.baidu.com/waiting__for__you/blog/item/967206ec863751d3b21cb170.html

        BigDecimal(double)是把一個(gè)double類型十進(jìn)制數(shù)構(gòu)造為一個(gè)BigDecimal對(duì)象實(shí)例。

    BigDecimal(String)是把一個(gè)以String表示的BigDecimal對(duì)象構(gòu)造為BigDecimal對(duì)象實(shí)例。

    習(xí)慣上,對(duì)于浮點(diǎn)數(shù)我們都會(huì)定義為double或float,但BigDecimal API文檔中對(duì)于BigDecimal(double)有這么一段話:

    Note: the results of this constructor can be somewhat unpredictable. One might assume that new BigDecimal(.1) is exactly equal to .1, but it is actually equal to .10000000000000000555111512312578 27021181583404541015625. This is so because .1 cannot be represented exactly as a double (or, for that matter, as a binary fraction of any finite length). Thus, the long value that is being passed in to the constructor is not exactly equal to .1, appearances notwithstanding.

    The (String) constructor, on the other hand, is perfectly predictable: new BigDecimal(".1") is exactly equal to .1, as one would expect. Therefore, it is generally recommended that the (String) constructor be used in preference to this one

    下面對(duì)這段話做簡(jiǎn)單解釋:

    注意:這個(gè)構(gòu)造器的結(jié)果可能會(huì)有不可預(yù)知的結(jié)果。有人可能設(shè)想new BigDecimal(.1)等于.1是正確的,但它實(shí)際上是等于.1000000000000000055511151231257827021181583404541015625,這就是為什么.1不能用一個(gè)double精確表示的原因,因此,這個(gè)被放進(jìn)構(gòu)造器中的長(zhǎng)值并不精確的等于.1,盡管外觀看起來(lái)是相等的。

    然而(String)構(gòu)造器,則完全可預(yù)知的,new BigDecimal(“.1”)如同期望的那樣精確的等于.1,因此,(String)構(gòu)造器是被優(yōu)先推薦使用的。

    看下面的結(jié)果:

         System.out.println(new BigDecimal(123456789.02).toString());

          System.out.println(new BigDecimal("123456789.02").toString());

    輸出為:

    123456789.01999999582767486572265625

    123456789.02

    現(xiàn)在我們知道,如果需要精確計(jì)算,非要用String來(lái)夠造BigDecimal不可!





     

    posted on 2012-02-15 16:50 輕帆向南 閱讀(303) 評(píng)論(0)  編輯  收藏 所屬分類: oj


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    導(dǎo)航

    留言簿

    隨筆分類(13)

    隨筆檔案(13)

    文章分類

    最新評(píng)論

    主站蜘蛛池模板: 搜日本一区二区三区免费高清视频 | 妞干网免费视频在线观看| 亚洲另类激情综合偷自拍| 99精品免费视品| 亚洲级αV无码毛片久久精品| caoporm碰最新免费公开视频| 久久亚洲精品无码播放| 国产大片免费天天看| 亚洲综合另类小说色区| 中文成人久久久久影院免费观看| 激情97综合亚洲色婷婷五| 在线观看免费视频网站色| 亚洲AV无码精品色午夜果冻不卡| 久久这里只精品99re免费| 亚洲国产高清人在线| 1000部国产成人免费视频| 亚洲av无码一区二区三区观看| 毛片a级毛片免费观看免下载| 亚洲中文字幕无码av永久| 日韩中文无码有码免费视频 | 亚洲综合另类小说色区色噜噜| 看免费毛片天天看| 国产精品亚洲视频| 久久aa毛片免费播放嗯啊| 亚洲乱人伦精品图片| 四虎在线播放免费永久视频| 亚美影视免费在线观看 | 亚洲国产精品成人久久久| 青草草在线视频永久免费| 一级毛片a免费播放王色电影 | 国产免费久久久久久无码| 久久精品国产精品亚洲艾| AV无码免费永久在线观看| 蜜芽亚洲av无码一区二区三区 | 国产精品成人观看视频免费| 亚洲色大18成人网站WWW在线播放 亚洲色大成WWW亚洲女子 | 毛片无码免费无码播放| 亚洲欧美第一成人网站7777 | 亚洲视频一区二区三区| 狠狠久久永久免费观看| a级毛片在线视频免费观看|