2017-02-23 27 views
1

私はJavaを学んでいて、さまざまなJavaユーティリティと数値書式についてのセクションを教えています。しかし、私の書式設定は、本の中で述べるのと同じように動作していません。私のコードは次のようになります。本例ではDecimalFormatがJavaで適切な出力を出していない

import java.text.NumberFormat; 
import java.text.DecimalFormat; 

public class Lessons { 

public static void main(String[] args) { 

    double d = 7.1348759272948202842847; 

    System.out.printf("%15e %n", d); 

    NumberFormat cashFormat = NumberFormat.getCurrencyInstance(); 

    System.out.println(cashFormat.format(d)); 

    double e = 14.9; 
    double f = 16.09805938020001; 
    double g = 12346; 

    DecimalFormat Dec_Format = new DecimalFormat("##0.##E0"); 

    System.out.println(Dec_Format.format(e)); 
    System.out.println(Dec_Format.format(f)); 
    System.out.println(Dec_Format.format(g)); 
} 

、それは12345でフォーマットすることを言い、「## 0 ## E0。」「12.3E3」です。受信した出力は "12.345E3"です。

私が受け取っている出力は意味がありますが、本と一致しないため、本に誤りがあるか、何か間違っているかどうかはわかりません。

これは通常の出力ですか?

答えて

0

あなたが12.3E3を印刷するために使用しているフォーマットは、にそれほど代わりに正しくありません:

DecimalFormat Dec_Format = new DecimalFormat("##0.##E0"); 
使用するべき

DecimalFormat Dec_Format = new DecimalFormat("##0.E0"); 

これはあなたが表示されます:

7,134876e+00 
7,13 € 
14,9E0 
16,1E0 
12,3E3//<----------------- 
+0

そうですか。私は現金書式の部分を正しく理解していましたが、その本が示した方法のために、科学的表記法はあまり意味がありませんでした。あなたの例を正しく理解していれば、Javaのe表記法は、指定する必要がなく小数点以下1桁にデフォルト設定されます。##を追加すると、末尾に2つの数字が追加されます。 (すなわち、## 0.E0 = 12.3であるのに対し、## 0。## E0 = 12.345E3)これは、本のフレーズ/書式に対するより多くの意味を成している。 – AdamWestPhD

+0

そう?私の解決策が間違っているのはどういう意味ですか?@AdamWestPhD :) –

+0

それはうまくいくようです:)助けてくれてありがとう – AdamWestPhD