2017-11-02 16 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)); 
} 

firstUnity의 경우 텍스트 필드는 4을 보여줍니다. 불행히도 secondUnity"5686274509807"입니다.

누군가이 해석의 이유가 무엇인지 설명 할 수 있습니까? 당신의 도움이

+6

나는'JTextField'의 크기와 관련된 문제라고 생각합니다. '3.921'은'3.9215686274509807'에 표시되지 않습니다 –

답변

5

귀하의 JTextField에 대한

덕분에 double 표시 할 너무 짧습니다.

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의 답입니다. 마지막 숫자가 '오답'과 일치합니까?

난 당신의 텍스트 필드가 전체 대답을 보여주기에 충분하지 않다고 생각합니다. 텍스트 필드의 크기를 변경하십시오.