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

王小探 北京中百信软件技术有限公司 项目经理  2010-09-16 01:24:38
用hibernate把数据存入数据库

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

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

各位大虾 有没有办法 让Double不转换为科学记数法,前提是不改变num的字段类型 和 数据库的字段精度
...全文
386 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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));
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2010-09-16 01:24
社区公告
暂无公告