java - 尝试从文本字段读取格式化的 double 值

标签 java number-formatting decimalformat

我正在制作一个简单的计算器,目前正在尝试解决非整数问题。

有一个文本字段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/

相关文章:

java - 我正在尝试将多个paintComponents 放置在JFrame 中。

php - 格式编号因手机或商务电话而异

java - 有没有办法将格式化的 BigDecimal 数字分配给 BigDecimal?

java - 不使用 String API 时获取号码中的位数

java - 对于简单的浮点截断来说,使用 DecimalFormat 是否太多了?

java - 将 double 格式格式化为小数点后两位 - 编译错误

java - 将默认区域设置分隔符与 NumberFormat 结合使用,然后对数字进行舍入

java - 如何在主 UI 线程的不同线程中执行处理程序

java - Eclipse Indigo 安装 m2e-wtp 插件时出现问题

java - 我如何从 java 应用程序启动 git 命令序列?