我正在制作一个简单的计算器,目前正在尝试解决非整数问题。
有一个文本字段displayField
,显示结果和运算符按钮以及一个等号按钮。
刚刚发现 double 结果仅显示小数位(如果有的话),但我无法将结果返回到计算中。
public class FXMLDocumentController implements Initializable {
private String operator;
double oldValue;
double newValue = 0;
NumberFormat nf = new DecimalFormat("##.###");
@FXML
private TextField displayField;
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
}
@FXML
private void handleDigitAction(ActionEvent event) {
String digit = ((Button) event.getSource()).getText();
String oldText = displayField.getText();
String newText = oldText + digit;
displayField.setText(newText);
}
@FXML
private void handleOperator(ActionEvent event) {
oldValue = Double.parseDouble(displayField.getText());
displayField.setText("");
operator = ((Button) event.getSource()).getText();
}
@FXML
private void handleEqualAction(ActionEvent event) {
switch (operator) {
case "+":
newValue = oldValue + Double.parseDouble(displayField.getText());
break;
case "-":
newValue = oldValue - Double.parseDouble(displayField.getText());
break;
case "*":
newValue = oldValue * Double.parseDouble(displayField.getText());
break;
case "/":
newValue = oldValue / Double.parseDouble(displayField.getText());
break;
default:
break;
}
displayField.setText(String.valueOf(nf.format(newValue)));
}
}
例如,当我尝试先计算 5/2,得到结果 2,5,然后点击操作按钮时,就会发生错误。 因此,我假设我只需要使用附加对象来保存结果,或者只更改我从文本字段读取的行(以便它也适用于这种更改后的格式),但我不知道如何操作。
最佳答案
您能告诉我们您的应用程序运行在哪个区域吗?
执行
System.out.println(Locale.getDefault());
关于java - 尝试从文本字段读取格式化的 double 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32972217/