java - 如何将 double 更改为字符串

标签 java android numberformatexception decimalformat

我有一个应用程序,它在 EditText 中显示一个字符串,该字符串是用户在两个不同的 EditText 中键入的另外两个 double 操作的结果。 问题是我希望操作结果显示在第三个 EditText 中,但为此它必须是一个字符串。因此我通过 toString 方法更改结果。

问题从这里开始,我希望作为字符串的 double 只有一位小数。为此,我使用了 DecimalFormat 并创建了 df 格式“#.#”。然后我将最后一个 EditText 中显示的文本更改为只有一位小数的新 double 变量(显然将其更改为字符串)。

DecimalFormat df = new DecimalFormat("#.#");
double BMI_trimmed = Double.parseDouble(df.format(BMI));

final EditText BMIResult = (EditText)findViewById(R.id.BMIResult);
BMIResult.setText(Double.toString(BMI_trimmed));

这里我给大家留下 myButtonListenerMethod 的所有代码:

public void myButtonListenerMethod(){
    button = (Button)findViewById(R.id.button);

    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            final EditText heighText = (EditText)findViewById(R.id.heightInput);
            String heighStr = heighText.getText().toString();
            double height = Double.parseDouble(heighStr);

            final EditText weighText = (EditText)findViewById(R.id.weightInput);
            String weighStr = weighText.getText().toString();
            double weight = Double.parseDouble(weighStr);

            double BMI = (weight)/(height*height);

            DecimalFormat df = new DecimalFormat("#.#");
            double BMI_trimmed = Double.parseDouble(df.format(BMI));

            final EditText BMIResult = (EditText)findViewById(R.id.BMIResult);
            BMIResult.setText(Double.toString(BMI_trimmed));
        }
    });
}

这个应用程序在 AVD 上完美运行,我已经运行了三个。但是当我在真实设备中运行它并单击启动 myButtonListenerMethod 的按钮时,它突然停止工作并关闭。终端给出以下错误消息:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.bmicalculator, PID: 19058
    java.lang.NumberFormatException: For input string: "24,2"
        at java.lang.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1306)

如果有人知道问题是什么,请告诉我,我会尝试。老实说,我不明白为什么它可以在 AVD 中运行,但在真实设备中却不能正常运行。有什么想法吗?

最佳答案

您已经根据需要从格式化程序中获得了四舍五入的值并作为字符串。不要尝试解析它,只是显示它。

BMIResult.setText(df.format(BMI));

关于java - 如何将 double 更改为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61172750/

相关文章:

java - 或管道不工作?

android - 如何列出传递另一个 Activity 的图像

android - 如何检查ImageView是否附加了android中的图像

java - 检查 JTextField 是否为空时出现 NumberFormatException 错误

java - 什么是NumberFormatException,我该如何解决?

java - 我的代码中的 NumberFormatException

java - Spring XML 配置 - 如何定义 Instant、BigDecimal、...参数?

java - session 同步的目的是什么

java - RxJava/Rx绑定(bind) : how to handle errors on RxView

android - 此版本中使用了已弃用的 Gradle 功能,使其与 Gradle 7.0 不兼容。 flutter