关于double中科学计数法的问题,各位高人指点啊

王小探 2010-09-16 01:24:38
用hibernate把数据存入数据库

domain类中对应的 字段是num 字段类型 是 Double

当传给num的数值位数大于7位时,自动转换为科学记数法,但是在保存入数据时会提示 精度错误

各位大虾 有没有办法 让Double不转换为科学记数法,前提是不改变num的字段类型 和 数据库的字段精度
...全文
593 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengzhang222 2012-04-25
  • 打赏
  • 举报
回复
小弟也碰到了这个问题,有解决办法吗?
王小探 2010-09-16
  • 打赏
  • 举报
回复
谢谢5楼 如果就几个字段 或者数据合适 我觉得你的办法很好。。
但是小弟我做的是一个财务系统,数据都是以万为单位,但是还会出现那么大的数,所以缩小多少倍不好确定,还有财务系统出的报告里面要用的数据能有几百个字段,如果每个都缩小再放大,对于代码来说太麻烦了
WANGYQ_412 2010-09-16
  • 打赏
  • 举报
回复
我建议LZ这种情况可以把数据库这个列的数据统一缩小数倍,拿出来用的时候可以放大数倍,就不会出现这个问题了
王小探 2010-09-16
  • 打赏
  • 举报
回复
1楼的方法我想到过,不过最后a.format(d)这个是string类型的 如果把它转化成double类型他还是会用到科学计数法,我做的这个项目是通过一个计算公式 算出一个数,把它四舍五入保留两位小数,但JAVA把算出来的数直接用科学计数法表示了,截取后存库报精度大的问题
3楼的话很有道理,不过人家把数据库弄成double类型的,我一个小程序员有什么办法。。。。
还是希望有人知道如何做可以,,,指点小弟吧,这点屁大的问题折磨死我了,需求不能改,数据库不能改,
就只能折磨我了
zn85600301 2010-09-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 madfatso 的回复:]
Java code
DecimalFormat a = new DecimalFormat("#,##0.000000");
double d = 12345678.222333;
System.out.println(a.format(d));
[/Quote]
你再FORMAT 有用吗 入库后还是一样的,这是数据库自己的储存方式.
为什么要用Double 还是那句老话 带小数只有String是最方便的 不信你试试
24K純帥 2010-09-16
  • 打赏
  • 举报
回复
不改变字段类型俺还真是想不出好办法
madFatso 2010-09-16
  • 打赏
  • 举报
回复
DecimalFormat a = new DecimalFormat("#,##0.000000");
double d = 12345678.222333;
System.out.println(a.format(d));

81,122

社区成员

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

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