2017-11-02 13 views
2

間違った浮動小数点数を算出し、私は現在、画面上の特定の値の計算を含むプロジェクトに取り組んでいます:ダブル

double calculatedValue; 
double calculatedValue2; 
private JTextField firstUnity; 
private JTextField secondUnity; 
firstUnity = new JTextField(); 
firstUnity.setEditable(false); 
secondUnity = new JTextField(); 
secondUnity.setEditable(false); 
add(firstUnity); 
add(secondUnity); 

public void calculate(){ 
    calculatedValue = 10/2.5; 
    calculatedValue2 = 10/2.55; 
    firstUnity.setText(String.valueOf(calculatedValue)); 
    secondUnity.setText(String.valueOf(calculatedValue2)); 
} 

期待通りのTextFieldが4示しfirstUnityについて。残念ながらsecondUnity"5686274509807"と表示されます。

誰かがこの解釈の理由を説明することができますか?あなたの助けのための

おかげ

+6

私はその問題を 'JTextField'のサイズと考えています。 '3.921'は' 3.9215686274509807'のために表示されません –

答えて

5

あなたJTextFielddoubleを表示するには短すぎます。

public static final DecimalFormat DISPLAY_FORMAT = new DecimalFormat("#.####"); 

public void calculate(){ 
    calculatedValue = 10/2.5; 
    calculatedValue2 = 10/2.55; 
    firstUnity.setText(FORMAT.format(calculatedValue)); 
    secondUnity.setText(FORMAT.format(calculatedValue2)); 
} 

あなたが数を増加/減少によって示される小数点以下の桁数を調整することができます:あなたはDecimalFormatを使用して表示、または小数点以下の桁数を減少させることによってどちらかのラベルが十分に広いことを確実にすることによってこの問題を解決することができますDecimalFormatコンストラクタ引数の#文字。

+0

あなたの助けてくれてありがとう!かなり明白な間違いと完璧な解決策 – Felix

+0

あなたは大歓迎です。回答の横にある灰色の灰色のチェックマークをクリックすることをお勧めします。これは将来の人々がこの問題の解決策をより早く見つけるのを助け、問題に答えるための努力を報います:) –

4

calculateValue2 = 3.9215686274509807の答えです。 最後の数字があなたの「間違った答え」と一致していますか?

あなたのテキストフィールドが答え全体を表示するのに十分ではないと思います。 テキストフィールドのサイズを変更してください。