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

时间:2022-09-15 15:27:25
用hibernate把数据存入数据库

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

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

各位大虾 有没有办法 让Double不转换为科学记数法,前提是不改变num的字段类型 和 数据库的字段精度

7 个解决方案

#1


DecimalFormat a = new DecimalFormat("#,##0.000000");
double d = 12345678.222333;
System.out.println(a.format(d));

#2


不改变字段类型俺还真是想不出好办法

#3


引用 1 楼 madfatso 的回复:
Java code
DecimalFormat a = new DecimalFormat("#,##0.000000");
double d = 12345678.222333;
System.out.println(a.format(d));

你再FORMAT 有用吗 入库后还是一样的,这是数据库自己的储存方式.
为什么要用Double  还是那句老话 带小数只有String是最方便的 不信你试试

#4


1楼的方法我想到过,不过最后a.format(d)这个是string类型的 如果把它转化成double类型他还是会用到科学计数法,我做的这个项目是通过一个计算公式 算出一个数,把它四舍五入保留两位小数,但JAVA把算出来的数直接用科学计数法表示了,截取后存库报精度大的问题
3楼的话很有道理,不过人家把数据库弄成double类型的,我一个小程序员有什么办法。。。。
还是希望有人知道如何做可以,,,指点小弟吧,这点屁大的问题折磨死我了,需求不能改,数据库不能改,
就只能折磨我了

#5


我建议LZ这种情况可以把数据库这个列的数据统一缩小数倍,拿出来用的时候可以放大数倍,就不会出现这个问题了

#6


谢谢5楼 如果就几个字段 或者数据合适 我觉得你的办法很好。。
但是小弟我做的是一个财务系统,数据都是以万为单位,但是还会出现那么大的数,所以缩小多少倍不好确定,还有财务系统出的报告里面要用的数据能有几百个字段,如果每个都缩小再放大,对于代码来说太麻烦了

#7


小弟也碰到了这个问题,有解决办法吗?

#1


DecimalFormat a = new DecimalFormat("#,##0.000000");
double d = 12345678.222333;
System.out.println(a.format(d));

#2


不改变字段类型俺还真是想不出好办法

#3


引用 1 楼 madfatso 的回复:
Java code
DecimalFormat a = new DecimalFormat("#,##0.000000");
double d = 12345678.222333;
System.out.println(a.format(d));

你再FORMAT 有用吗 入库后还是一样的,这是数据库自己的储存方式.
为什么要用Double  还是那句老话 带小数只有String是最方便的 不信你试试

#4


1楼的方法我想到过,不过最后a.format(d)这个是string类型的 如果把它转化成double类型他还是会用到科学计数法,我做的这个项目是通过一个计算公式 算出一个数,把它四舍五入保留两位小数,但JAVA把算出来的数直接用科学计数法表示了,截取后存库报精度大的问题
3楼的话很有道理,不过人家把数据库弄成double类型的,我一个小程序员有什么办法。。。。
还是希望有人知道如何做可以,,,指点小弟吧,这点屁大的问题折磨死我了,需求不能改,数据库不能改,
就只能折磨我了

#5


我建议LZ这种情况可以把数据库这个列的数据统一缩小数倍,拿出来用的时候可以放大数倍,就不会出现这个问题了

#6


谢谢5楼 如果就几个字段 或者数据合适 我觉得你的办法很好。。
但是小弟我做的是一个财务系统,数据都是以万为单位,但是还会出现那么大的数,所以缩小多少倍不好确定,还有财务系统出的报告里面要用的数据能有几百个字段,如果每个都缩小再放大,对于代码来说太麻烦了

#7


小弟也碰到了这个问题,有解决办法吗?