【Java】区分BigDecimal的toString()和toPlainString()
生活随笔
收集整理的這篇文章主要介紹了
【Java】区分BigDecimal的toString()和toPlainString()
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
求值語句
為了能表示出科學計數法,我們得讓數小一點:
BigDecimal num = new BigDecimal(0.2333).pow(20);打印結果
System.out.println(num); 2.28189037167401120969664016458058704445821447776153697856333722521431496331550551213930891906957487435112104808347862419891420033162248142531663995155772279146232315410060206987151178648426698855546081020777110688844170619669193518453985280966919855312604013430815833563803446476005419063873594466971526322215177750276141448913214334808975521236293623113834028980688572444044246581431849340824046219938314943100698334559217720778436613420267026603092024290999790614071820410967350767900092513471798538644190754888725556844272602124114705649986642100894001740207945946131697703242257894368252834211931168108684805772879141748782976829469911671275574176661389794305239001858006008883235021362729155223312931934657673225453759580180785170264139962848926240405883081486320326522336957649286875366094925648693739077878530704550560566747517994737139860236090744552245807066682260105331670524231711427517062910685789869039060383532495613756103646363461215507160773269224241213935868860166499926337883991102182710785104859748632046196649414415702494807192124426364898681640625E-13toString()打印結果
結果是一樣的,因為我們其實也知道在打印num的時候其實默認就是打印num.toString()啦!
System.out.println(num.toString()); 2.28189037167401120969664016458058704445821447776153697856333722521431496331550551213930891906957487435112104808347862419891420033162248142531663995155772279146232315410060206987151178648426698855546081020777110688844170619669193518453985280966919855312604013430815833563803446476005419063873594466971526322215177750276141448913214334808975521236293623113834028980688572444044246581431849340824046219938314943100698334559217720778436613420267026603092024290999790614071820410967350767900092513471798538644190754888725556844272602124114705649986642100894001740207945946131697703242257894368252834211931168108684805772879141748782976829469911671275574176661389794305239001858006008883235021362729155223312931934657673225453759580180785170264139962848926240405883081486320326522336957649286875366094925648693739077878530704550560566747517994737139860236090744552245807066682260105331670524231711427517062910685789869039060383532495613756103646363461215507160773269224241213935868860166499926337883991102182710785104859748632046196649414415702494807192124426364898681640625E-13toPlainString()打印結果
這次,可有點不同啦!
System.out.println(num.toPlainString()); 0.000000000000228189037167401120969664016458058704445821447776153697856333722521431496331550551213930891906957487435112104808347862419891420033162248142531663995155772279146232315410060206987151178648426698855546081020777110688844170619669193518453985280966919855312604013430815833563803446476005419063873594466971526322215177750276141448913214334808975521236293623113834028980688572444044246581431849340824046219938314943100698334559217720778436613420267026603092024290999790614071820410967350767900092513471798538644190754888725556844272602124114705649986642100894001740207945946131697703242257894368252834211931168108684805772879141748782976829469911671275574176661389794305239001858006008883235021362729155223312931934657673225453759580180785170264139962848926240405883081486320326522336957649286875366094925648693739077878530704550560566747517994737139860236090744552245807066682260105331670524231711427517062910685789869039060383532495613756103646363461215507160773269224241213935868860166499926337883991102182710785104859748632046196649414415702494807192124426364898681640625總結
對于一個數值可能很小的BigDecimal對象來說,使用toString()可能由于打印的數值太小而打印其科學計數法表示,而使用toPlainString()才能打印完整的數值。
完整代碼
import java.math.BigDecimal;public class BigDecimalTest {public static void main(String[] args) {BigDecimal num = new BigDecimal(0.2333).pow(20);System.out.println(num);System.out.println(num.toString());System.out.println(num.toPlainString());} }說明
例子的結果不能不夠小,否則可能誤認為三者一樣。
比如最早我測的是這個:
import java.math.BigDecimal;public class BigDecimalTest {public static void main(String[] args) {BigDecimal num = new BigDecimal(0.66).pow(10);System.out.println(num);System.out.println(num.toString());System.out.println(num.toPlainString());} }但結果很悲催:
>java BigDecimalTest 0.01568336880910796514692485387380358722432090658674607795185185558463356941593280438333875994123155412243735195834705140991618787447848128774946858219534786702323782812590762928242630260751971484116602400344065713771468254349752623195976497313013575753886310637762485552492886146251661530527797289372428420293315321412564193962492477328625977419079453856979274761289232833572242408303626740680597755011834774326410628545344183904639899408459342093849694664301730220414247643012754939939265054482664396573454723693430423736572265625 0.01568336880910796514692485387380358722432090658674607795185185558463356941593280438333875994123155412243735195834705140991618787447848128774946858219534786702323782812590762928242630260751971484116602400344065713771468254349752623195976497313013575753886310637762485552492886146251661530527797289372428420293315321412564193962492477328625977419079453856979274761289232833572242408303626740680597755011834774326410628545344183904639899408459342093849694664301730220414247643012754939939265054482664396573454723693430423736572265625 0.01568336880910796514692485387380358722432090658674607795185185558463356941593280438333875994123155412243735195834705140991618787447848128774946858219534786702323782812590762928242630260751971484116602400344065713771468254349752623195976497313013575753886310637762485552492886146251661530527797289372428420293315321412564193962492477328625977419079453856979274761289232833572242408303626740680597755011834774326410628545344183904639899408459342093849694664301730220414247643012754939939265054482664396573454723693430423736572265625這很容易令人迷惑噠~
總結
以上是生活随笔為你收集整理的【Java】区分BigDecimal的toString()和toPlainString()的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数据库系统】数据模型、模式、数据的概念
- 下一篇: 【数据库系统】文件处理系统的弊端