请问为什么数据库的float类型,用resultset取出后变样了呢

seabird1979 2005-02-25 05:14:53
oracle数据库中的数据是float类型,数值是123318.8712,用resultset取出来却是123318.87119999999,用了各种取法,都有问题,请大侠们指教。
...全文
218 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
DESL 2005-02-28
  • 打赏
  • 举报
回复
来晚了..顶一下.
zwm1988 2005-02-28
  • 打赏
  • 举报
回复
up
seabird1979 2005-02-28
  • 打赏
  • 举报
回复
有什么解决方法呢?
RondyBin 2005-02-28
  • 打赏
  • 举报
回复
首先写进去会不会有问题?
然后从数据库怎么拿出来的?

若上面都不能确定,
取出来后,使用BigDecimal四舍五入吧
quiton 2005-02-28
  • 打赏
  • 举报
回复
使用BigInteger类可以实现任意精度的整数运算。使用BigDecimal可以实现任意精度的浮点预算!

但是使用这个类不能使用熟悉的数学操作符,比如+和*,来操作大数字。要实现这些功能必须使用大数字当中的add,multiply等方法。

例如:BigInteger c=a.add(b);//c=a+b
BigInteger d=c.multiply(b.add(BigInteger.valueof(2)));//d=c*(b+2)

也可以看看java中的帮助文档,里面有更详细的介绍!
网络咖啡 2005-02-26
  • 打赏
  • 举报
回复
因为浮点数本身就不精确,在存储和计算的时候都会存在该问题
seabird1979 2005-02-26
  • 打赏
  • 举报
回复
在数据库中类型是float,没有设置精度,我用getBigDecimal和getFloat都不行啊
jFresH_MaN 2005-02-25
  • 打赏
  • 举报
回复
是不是oracle数据库的默认精度是这样的呢?
float可以设置精度,sql server就是这样的
jiggerli 2005-02-25
  • 打赏
  • 举报
回复
用resultset里的getString()来取数啊!
bzCpp 2005-02-25
  • 打赏
  • 举报
回复
因为有的浮点数,计算机无法准确的表示,只好用很接近的浮点数去表示。Oracle数据库中应该用的char[]来存放的数字吧
你可以考虑用用看java.math.BigDecimal

62,614

社区成员

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

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