Java处理30位的数据(小数点前20位,小数点后面10位),请问是怎么处理的啊?
我现在读到这样30位的数据,读出来都是字符串。然后计算这些数据,计算的结果,也要求是30位的,然后保存到数据库
问题1:数据库怎么保存这样的数据好呢,数字字段保存,还是用字符串保存。(Oracle)
问题2:当读到这样的一个数据的时候(30位),怎么把这30位的字符串转成数字来运算,运算结果还要保留30位的精度(小数点后十位),并存到数据库。
问题3:如果这30位的数据里面如现了字符,如:1234564abc545.12545545454这样的情况怎么处理好?
自己想的一个问题,大家看一下,有好的方法和思路没有,谢谢了。。如果认为上面没有说清楚的,我再补充
[b]问题补充:[/b]
再补充一个问题
问题4:如果读上来的是科学记数法怎么处理
如下:2.345645754412300023E+15
[b]问题补充:[/b]
[code="java"]BigDecimal n3 = new BigDecimal(3.34564575441235634143223E+9);
System.out.println(n3)[/code]
这样的话n3会失去精度
结果为
3345645754.41235637664794921875
但是我每次运行都是这个结果
[b]问题补充:[/b]
好,我先去研究下,再来问你们,谢谢了
[b]问题补充:[/b]
[code="java"]
System.out.println(new Double(1.2345678901234567890E+9).toString());
//结果是:1.2345678901234567E9
//只能保证17位啊,我想保证30位数,怎么保证啊?谢谢大家了
BigDecimal n3 = new BigDecimal(1.2345678901234567890E+9);
System.out.println(n3);
//这样也只能保证17位数
//输出结果:1234567890.123456716537475585937500000000
//到了17位之后就保留不了精度了
[/code]
[b]问题补充:[/b]
还有就是oracle数据库里面,有什么类型创建的表,让17位的数存进去,不发生改变(保留精度),谢谢大家了