我目前正在开发一个项目,其中包含屏幕上某些值的计算:

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,TextField按预期显示4
不幸的是secondUnity显示"5686274509807"

有人可以向我解释这种解释的原因是什么?

谢谢你的帮助

最佳答案

您的JTextField太短而无法显示double。您可以通过确保标签足够宽或通过使用DecimalFormat减少显示的小数位数来解决此问题:

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字符数来调整显示的小数位数。

08-18 16:40