在一個近似數中,從左邊第一個不是0的數字起,到精確到的位數止,這中間的所有數字都叫做這個近似數的有效數字
例如:
890314000保留三位有效數字為8.90×10的8次方(四捨)
839960000保留三位有效數字為8.40×10的8次方(五入)
0.00934593保留三位有效數字為9.35×10的-3次方
#大多數計算器及電腦程式用科學記數法顯示非常大和非常小的結果。因為指數上標(例如1011)在螢幕上顯示不方便,字母E或e通常是用來代表的十次方(寫作“×10b”),E或e之後的數字是它的指數;換句話說,任何兩實數a和b(b應為整數),「aEb」所表示的值是a × 10b。注意,這種用法中字母e不是數學常數e,也不是指數函數exp()(採用用大寫字母E顯示可以更大程度地避免誤解);儘管它也表示指數,但這個符號通常被稱為(科學計數法)E或e符號,而不是指數中的底數符號(儘管後者也會出現)。在正式的出版物中盡量不要使用這種顯示方法。
注意科學記數法中的e或E與數學常數e或函數exp沒有關係。
這種寫法是因為一些電腦程式中不方便寫上標而產生的,在正式出版物中不應當使用這種寫法。
我國國家標準中科學計數法均以a ×10b的形式表示,而非aEb(參見GB3101-1993,GBT15835-2011,GBT8170-2008)。
在Java中,當Double的取值符合某條件時,就會以科學計數法的方式顯示(以下是個人測試的結果,非從文檔中得到的結論):
@Test publicvoid testPrintScientificNotation(){ //整数部分位数大于等于8时开始以科学计数法显示 System.out.println(-12345678.0); System.out.println(12345678.0); //整数位为0,当小数位以0开始连续出现大于等于3时开始以科学计数法显示 System.out.println(0.0001); System.out.println(-0.0001); }
結果
<span class="pun">#-</span><span class="lit">1.2345678E7</span>
<span class="lit">1.2345678E7</span>
<span class="lit">#1.0E- 4</span>
<span class="pun">-</span><span class="lit">1.0E-4</span>
根據網路上的資料,主要提及NumberFormat、DecimalFormat、BigDecimal這三種
API實作方式。
publicstaticString scientificNotation2String(Double d,int newValue){ String value =null; NumberFormat nf =NumberFormat.getInstance(); // 设置此格式中不使用分组 nf.setGroupingUsed(false); // 设置数的小数部分所允许的最大位数。 nf.setMaximumFractionDigits(newValue); value = nf.format(d); return value; }如果輸入的小數位數,大於設定的最大的小數位數,則會進行四捨五入。 2.2 DecimalFormatDecimalFormat 是 NumberFormat 的一個具體子類,用於格式化十進位數字。這個類別設計有各種功能,使其能夠解析和格式化任意語言環境中的數,包括對西方語言、阿拉伯語和印度語數字的支援。它也支持不同類型的數,包括整數 (123)、定點數 (123.4)、科學記數法表示的數 (1.23E4)、百分數 (12%) 和金額 ($123)。所有這些內容都可以在地化。
publicstaticString scientificNotation2String(Double d){ String value =null; DecimalFormat decimalFormat =newDecimalFormat("0.00");//格式化设置 value = decimalFormat.format(d); return value; }需要設定模版,指定小數保留的位數,傳入數值小數位數超出指定位數,則會進行四捨五入;傳入數值小數位不足指定位數,則可以設定補零。
需要將數值轉換為科學計數法只須將模版修改即可,例如將模版修改為:0.##E0
publicstaticString scientificNotation2String(String str){ String value =null; BigDecimal bd =newBigDecimal(str); value = bd.toPlainString(); return value; }BigDecimal的
建構方法很多,不一定要傳入String類型的值。 BigDecimal中的toString方法和toPlanString方法的區別:
以上是Java科學計數法詳細說明的詳細內容。更多資訊請關注PHP中文網其他相關文章!