SQL的Numeric和JAVA的BigDecimal转换问题

chen_hh2 2006-01-10 03:22:13
SQL的Numeric和JAVA的BigDecimal转换问题:

数据库中的字段类型为Numeric(8,6)

JAVA中的部分实现代码为:
BigDecimal bg = new BigDecimal("23.45");
String str = bg.setScale(6,BigDecimal.ROUND_HALF_UP).toString();//设置成小数点后6位
......
pstmt.setBigDecimal(1, new BigDecimal(str));//这里到数据库后就只有小数点后2位了

System.out.println(new BigDecimal(str));//这里打印出来为:23.450000

原因:setBigDecimal会把JAVA中BigDecimal转成SQL中的Numeric后就只有2位精度了

由于是牵涉到金钱的问题,所以用float不精确,如果用setFloat,存到数据库后为:23.449899类似的数据,而且一般JAVA中对钱的处理都用BigDecimal

那么现在在不改变数据的存储类型的情况下,如何实现 JAVA中用BigDecimal,精确到6位小数,且存入数据库后也精确到小数点后6位??

大侠们指点指点,多谢!!
...全文
157 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

62,629

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧