考虑SQL语句INSERT INTO table (field) VALUES (-0.11111111)
与field
甲骨文型号。
如果要插入的值是float类型或双的,你得到的确切价值field
,即-0.11111111。
但是,当要插入的价值类型为BigDecimal
,你得到的随机数,即0.1111111099999999990428634077943570446223填充值。
为什么?
Java的规定“ BigDecimal
是不可变的,任意精度的有符号十进制数。”
该代码是:
String sql = "INSERT INTO pat_statistics (file_key,test_number,rqw)"
+ " VALUES (3778, 100, " + new BigDecimal(-0.11111111) + ")";
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, user, pwd);
Statement st = conn.createStatement();
int n = st.executeUpdate(sql);
该数据库是Oracle。