java科學(xué)計(jì)數(shù)法

1 科學(xué)計(jì)數(shù)法的概念

1.1 有效數(shù)字

在一個(gè)近似數(shù)中,從左邊第一個(gè)不是0的數(shù)字起舌胶,到精確到的位數(shù)止,這中間的所有數(shù)字都叫做這個(gè)近似數(shù)的有效數(shù)字

例如:

890314000保留三位有效數(shù)字為8.90×10的8次方 (四舍)

839960000保留三位有效數(shù)字為8.40×10的8次方 (五入)

0.00934593保留三位有效數(shù)字為9.35×10的-3次方

1.2 E記號(hào)

大多數(shù)計(jì)算器及計(jì)算機(jī)程序用科學(xué)記數(shù)法顯示非常大和非常小的結(jié)果。因?yàn)橹笖?shù)上標(biāo)(例如1011)在屏幕上顯示不方便纵势,字母E或e通常是用來代表的十次冪(寫作“×10b”),E或e之后的數(shù)字是它的指數(shù)管钳;換句話說钦铁,任何兩實(shí)數(shù)a和b(b應(yīng)為整數(shù)),“aEb”所表示的值是a × 10b才漆。注意牛曹,這種用法中字母e不是數(shù)學(xué)常數(shù)e,也不是指數(shù)函數(shù)exp()(采用用大寫字母E顯示可以更大程度地避免誤解)醇滥;盡管它也表示指數(shù)黎比,但這個(gè)符號(hào)通常被稱為(科學(xué)計(jì)數(shù)法)E或e符號(hào),而不是指數(shù)中的底數(shù)符號(hào)(盡管后者也會(huì)出現(xiàn))鸳玩。在正式的出版物中盡量不要使用這種顯示方法阅虫。

注意科學(xué)記數(shù)法中的e或E與數(shù)學(xué)常數(shù)e或函數(shù)exp沒有關(guān)系。

這種寫法是因?yàn)橐恍┯?jì)算機(jī)程序中不方便寫上標(biāo)而產(chǎn)生的不跟,在正式出版物中不應(yīng)當(dāng)使用這種寫法颓帝。

我國國家標(biāo)準(zhǔn)中科學(xué)計(jì)數(shù)法均用a ×10b的形式表示,而不是aEb(參見GB3101-1993,GBT15835-2011购城,GBT8170-2008)吕座。

2 Java中的科學(xué)計(jì)數(shù)法

在Java中,當(dāng)Double的取值符合某條件時(shí)瘪板,將會(huì)以科學(xué)計(jì)數(shù)法的方式顯示(下面是個(gè)人測試的結(jié)果米诉,非從文檔中得到的結(jié)論):

@Test

publicvoidtestPrintScientificNotation(){

//整數(shù)部分位數(shù)大于等于8時(shí)開始以科學(xué)計(jì)數(shù)法顯示

System.out.println(-12345678.0);

System.out.println(12345678.0);

//整數(shù)位為0,當(dāng)小數(shù)位以0開始連續(xù)出現(xiàn)大于等于3時(shí)開始以科學(xué)計(jì)數(shù)法顯示

System.out.println(0.0001);

System.out.println(-0.0001);

}

結(jié)果

-1.2345678E7

1.2345678E7

1.0E-4

-1.0E-4

很多時(shí)候,我們需要做一個(gè)統(tǒng)一篷帅,要么全部以科學(xué)計(jì)數(shù)法輸出史侣,要么就全部顯示為普通計(jì)數(shù)。

根據(jù)網(wǎng)上的資料魏身,主要提及NumberFormat惊橱、DecimalFormat、BigDecimal這三種API實(shí)現(xiàn)方式箭昵。

2.1 NumberFormat

NumberFormat 是所有數(shù)值格式的抽象基類税朴。

publicstaticStringscientificNotation2String(Doubled,intnewValue){

Stringvalue=null;

NumberFormatnf=NumberFormat.getInstance();

// 設(shè)置此格式中不使用分組

nf.setGroupingUsed(false);

// 設(shè)置數(shù)的小數(shù)部分所允許的最大位數(shù)。

nf.setMaximumFractionDigits(newValue);

value=nf.format(d);

returnvalue;

}

如果輸入的小數(shù)位數(shù)家制,大于設(shè)定的最大的小數(shù)位數(shù)正林,則會(huì)進(jìn)行四舍五入。

2.2 DecimalFormat

DecimalFormat 是 NumberFormat 的一個(gè)具體子類颤殴,用于格式化十進(jìn)制數(shù)字觅廓。該類設(shè)計(jì)有各種功能,使其能夠解析和格式化任意語言環(huán)境中的數(shù)涵但,包括對西方語言杈绸、阿拉伯語和印度語數(shù)字的支持。它還支持不同類型的數(shù)矮瘟,包括整數(shù) (123)瞳脓、定點(diǎn)數(shù) (123.4)、科學(xué)記數(shù)法表示的數(shù) (1.23E4)澈侠、百分?jǐn)?shù) (12%) 和金額 ($123)劫侧。所有這些內(nèi)容都可以本地化。

publicstaticStringscientificNotation2String(Doubled){

Stringvalue=null;

DecimalFormatdecimalFormat=newDecimalFormat("0.00");//格式化設(shè)置

value=decimalFormat.format(d);

returnvalue;

}

需要設(shè)置模版哨啃,指定小數(shù)保留的位數(shù)烧栋,傳入數(shù)值小數(shù)位數(shù)超出指定位數(shù),則會(huì)進(jìn)行四舍五入棘催;傳入數(shù)值小數(shù)位不足指定位數(shù)劲弦,則可以設(shè)置補(bǔ)零。

需要將數(shù)值轉(zhuǎn)換為科學(xué)計(jì)數(shù)法只須將模版修改即可醇坝,例如將模版修改為:0.##E0

2.3 BigDecimal

BigDecimal是不可變的邑跪、任意精度的有符號(hào)十進(jìn)制數(shù)次坡。

publicstaticStringscientificNotation2String(Stringstr){

Stringvalue=null;

BigDecimalbd=newBigDecimal(str);

value=bd.toPlainString();

returnvalue;

}

BigDecimal的構(gòu)造方法很多,不一定是要傳入String類型的值画畅。

BigDecimal中的toString方法和toPlanString方法的區(qū)別:

toString():返回此BigDecimal的字符串表示形式砸琅,如果需要指數(shù),則使用科學(xué)計(jì)數(shù)法

toPlainString():返回不帶指數(shù)字段的此BigDecimal的字符傳表示形式

歡迎加入技術(shù)QQ群:364595326

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末轴踱,一起剝皮案震驚了整個(gè)濱河市症脂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌淫僻,老刑警劉巖诱篷,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異雳灵,居然都是意外死亡棕所,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進(jìn)店門悯辙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來琳省,“玉大人,你說我怎么就攤上這事躲撰≌氡幔” “怎么了?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵拢蛋,是天一觀的道長桦他。 經(jīng)常有香客問我,道長瓤狐,這世上最難降的妖魔是什么瞬铸? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮础锐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘荧缘。我一直安慰自己皆警,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布截粗。 她就那樣靜靜地躺著信姓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪绸罗。 梳的紋絲不亂的頭發(fā)上意推,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天,我揣著相機(jī)與錄音珊蟀,去河邊找鬼菊值。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的腻窒。 我是一名探鬼主播昵宇,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼儿子!你這毒婦竟也來了瓦哎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤柔逼,失蹤者是張志新(化名)和其女友劉穎蒋譬,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體愉适,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡犯助,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了儡毕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片也切。...
    茶點(diǎn)故事閱讀 40,110評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖腰湾,靈堂內(nèi)的尸體忽然破棺而出雷恃,到底是詐尸還是另有隱情,我是刑警寧澤费坊,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布倒槐,位于F島的核電站,受9級特大地震影響附井,放射性物質(zhì)發(fā)生泄漏讨越。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一永毅、第九天 我趴在偏房一處隱蔽的房頂上張望把跨。 院中可真熱鬧,春花似錦沼死、人聲如沸着逐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽耸别。三九已至,卻和暖如春县钥,著一層夾襖步出監(jiān)牢的瞬間秀姐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工若贮, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留省有,地道東北人痒留。 一個(gè)月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像锥咸,于是被迫代替她去往敵國和親狭瞎。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評論 2 355

推薦閱讀更多精彩內(nèi)容