ホームページ  >  記事  >  Java  >  Java科学表記法の詳細な説明

Java科学表記法の詳細な説明

高洛峰
高洛峰オリジナル
2017-03-19 11:26:114214ブラウズ

Java 科学表記法

1 科学的表記法の概念

1.1 有効数字

近似数では、左端の 0 ではない最初の数値から始まり、正確な桁数まで、それらの間にあるすべての数値です。はすべて、この近似数の有効数字と呼ばれます
例:
890314000 は 8.90×10 の 8 乗の有効数字 3 桁を保持します (四捨五入)
839960000 は 8.40×10 の 8 乗の有効数字 3 桁を保持します (四捨五入)
0.00934593有効数字 3 桁までは 9.35×10 の -3 乗です

1.2 E 表記

ほとんどの電卓やコンピューター プログラムは、非常に大きい結果と非常に小さい結果を科学表記法で表示します。指数の上付き文字 (1011 など) は画面上に表示するのが不便であるため、通常、文字 E または e は 10 乗 (「×10b」と表記) を表すために使用され、E または e の後の数字はその指数です。つまり、任意の 2 つの実数 a と b (b は整数である必要があります) について、「aEb」で表される値は a × 10b です。この使用法における文字 e は数学定数 e ではなく、指数関数 exp() (誤解を避けるため大文字の E で示されています) ではないことに注意してください。ただし、この記号は通常、指数を表します。指数の基底記号ではなく、(科学的記法) E または e 記号が呼び出されます (ただし、後者も発生します)。正式な出版物ではこの表示方法を使用しないようにしてください。 科学表記法の e または E は、数学定数 e または関数 exp とは何の関係もないことに注意してください。
この書き方は、一部のコンピュータープログラムで上付き文字を書く際の不便さによって引き起こされます。この書き方は公式出版物では使用しないでください。
私の国の国家標準における科学表記法は、aEb ではなく ×10b の形式で表されます (GB3101-1993、GBT15835-2011、GBT8170-2008 を参照)。


2 Javaの科学的表記法

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);
}

結果

  1. <span class="pun">-</span><span class="lit">1.2345678E7</span>

    <span class="pun">-</span><span class="lit">1.2345678E7</span>

  2. <span class="lit">1.2345678E7</span>

  3. <span class="lit">1.0E-4</span>

  4. -<span class="lit">1.0E-4</span>

  5. <span class="lit">1.2345678E7</span>


<span class="lit">1.0E-4</span>

-<span class="lit">1.0E-4</span>

多くの場合、統合を行う必要があります。どちらか一方をすべて出力する必要があります。科学表記法で表示するか、すべてを通常の表記法で表示します。

インターネット上の情報によると、

API

の実装メソッドは主にNumberFormat、DecimalFormat、BigDecimalの3つがあるそうです。

2.1 NumberFormat
NumberFormat は、すべての数値形式の抽象基本クラスです。

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 DecimalFormat

DecimalFormat は NumberFormat の具象サブクラスであり、10 進数の書式設定に使用されます。このクラスは、西洋数字、アラビア数字、インド数字のサポートなど、あらゆるロケールの数字を解析して書式設定できるさまざまな機能を備えて設計されています。また、整数 (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

  • 2.3 BigDecimal

    BigDecimal は不変の任意精度の符号付きです。 10 進数。

    publicstaticString scientificNotation2String(String str){
    String value =null;
    BigDecimal bd =newBigDecimal(str);
           value = bd.toPlainString();
    return value;
    }

    BigDecimalには多くの
  • コンストラクターメソッド
  • があり、String型の値を渡す必要はありません。

    BigDecimal の toString メソッドと toPlanString メソッドの違い:

🎜toString(): 指数が必要な場合は科学表記法を使用して、この BigDecimal の 🎜string🎜 表現を返します🎜🎜🎜🎜toPlainString(): no を返します指数フィールドを持つこの BigDecimal の文字渡し表現🎜🎜🎜

以上がJava科学表記法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。