0

我正在尝试在 java 中执行查询,以便从 DB 中获取一些值。我正在尝试比较从 DB 获取的货币/浮动值,并且该货币/浮动是从 rs.getString 的结果集中获得的。因此,在比较时,它是匹配的。这是我的代码,DBQuery 是 select * from Tablename 其中 Price='value1' value1 是从 UI 获取的预定义值

ResultSet rs = stmt.executeQuery(DBquery+"'"+value1+"';");
            z:
                while (rs.next()){
                    String name= rs.getString(DBCol3);
                    System.out.println("name="+name);
                    System.out.println("value1="+value1);
                    if(value1.equalsIgnoreCase(name)){
                        System.out.println("Values are Same");
                        break z;
                    }else{
                        System.out.println("Values Mismatch");

                    }
                }

在这种情况下,我从 UI 获取 value1 作为 123.45 在 db 中,Price 列也具有相同的值。但是在比较时,它显示我不匹配。名称=123.45000

4

2 回答 2

1

BigDecimal 是浮点/双精度的最佳数据类型。

于 2013-11-07T16:37:05.220 回答
1

不要使用字符串比较来比较十进制值。正如你的两个数字相等但由于尾随零字符串比较失败。

您应该将字符串值转换为 double 以避免由于尾随零导致的不匹配。您可以使用用户Double.parseDouble(String)将字符串转换为双精度。一旦你有两个数字使用==运算符比较它们。

于 2013-11-07T16:29:03.470 回答