gpt4 book ai didi

java - 有什么方法可以防止 Java 将我的 double 值变成指数值吗?

转载 作者:行者123 更新时间:2023-11-29 09:49:34 30 4
gpt4 key购买 nike

有没有办法阻止 Java 将我的 double 值变成指数值?我在将其保存到我的数据库时遇到问题。它一直告诉我它不能将我的 VarChar 转换为数字。

我愿意;

amt = oldAmt - amt;
amt = Math.abs(amt);

然后像这样使用 setter 将值放入 amt

jvd.setDr_amt(amt);

然后使用一个函数生成一个查询字符串,它给我;

INSERT INTO jv ( id, dr_amt) VALUES (1, 1.595545786E7);

数据库中 dr_amt 的数据类型是numeric(15, 2)

有人吗?

最佳答案

我非常猜测你会做这样的事情:

connection.createStatement().executeUpdate(
"INSERT INTO my_table VALUES('" + myDouble + "')");

不要这样做,原因如下:

  • 连接字符串会导致语法错误
  • 连接字符串会导致SQL注入(inject)

以让 JDBC 处理数据类型的方式编写语句:

PreparedStatement stmt = connection.prepareStatement(
"INSERT INTO my_table VALUES(?)");
stmt.setDouble(1, myDouble);
stmt.executeUpdate();

如果您绝对必须在您的 SQL 字符串中内联您的 double 值而不是使用绑定(bind)值,请尝试使用 BigDecimal 来序列化您的 double 值,而不是:

new BigDecimal(myDouble).toString();

由于您似乎是在对货币值进行操作,因此无论如何您都应该将所有 double 更改为 BigDecimal,因为 BigDecimal 是 Java 与 SQL 的 DECIMAL< 的最佳匹配 数据类型

关于java - 有什么方法可以防止 Java 将我的 double 值变成指数值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11449050/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com