【问题标题】:How to convert NumberFormat如何转换数字格式
【发布时间】:2019-08-20 14:07:59
【问题描述】:

我想更新一个数据库,想把数字像这样:1.384,38

这是我从文本字段更新的代码,但它不起作用

try {
                String query="Update Sina Set Iuuiu = ?  where Formate = ? " ;


                PreparedStatement pst=connection.prepareStatement(query);
                pst.setDouble(1, Double.parseDouble(textField_3.getText()));  

                pst.setString(2, "Zuschnittentnahme Gegensauger"); 

                pst.executeUpdate();


                    } catch (Exception e1) {
                        e1.printStackTrace();
                    }

这是我的代码。现在我必须这样输入:1344.43 但我想这样输入:1.344,43

【问题讨论】:

  • 我们需要更多的上下文,例如:为什么要将数字存储为字符串?您的更新代码/查询是什么样的?究竟什么“不起作用”? - 一般来说,请阅读How to Ask,然后相应地更新您的问题。
  • format(pst.setDouble(...)) 你到底想在这里做什么?您是否意识到 PreparedStatement.setDouble() 不返回任何内容,即 void
  • 也许this answer 可以帮助您解决数字格式问题。

标签: java number-formatting


【解决方案1】:

要在默认语言环境中解析数字,请使用

String text = textField_3.getText();
double number = NumberFormat.getInstance().parse(text).doubleValue();
pst.setDouble(1, number);

或使用给定的语言环境:

String text = textField_3.getText();
double number = NumberFormat.getInstance(Locale.GERMANY).parse(text).doubleValue();
pst.setDouble(1, number);

不要忘记 parseDouble 最终抛出的 ParseException 的 try-catch

【讨论】:

  • 如何将其放入我的代码中?我想用一个字符串设置一个文本字段,但该文本字段只接受这种格式的双精度:133.43
  • 这不是一个不同的问题吗?更新了问题以在您的代码中包含可能的用法
  • 只需将您的 pst.setDouble(1,... 行替换为我发布的 3 行
猜你喜欢
  • 1970-01-01
  • 2020-01-04
  • 2020-12-05
  • 2021-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-16
  • 2019-01-13
相关资源
最近更新 更多