java中数值类型转换的问题,double类型显示科学计数法了。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中数值类型转换的问题,double类型显示科学计数法了。相关的知识,希望对你有一定的参考价值。
一个字段是double类型的,oracle数据库中是 number(18,2),页面限制输入8位。
现在输入:12345678
数据库中存的是:12345678.00
再回显到页面时就变成了:1.2345678E7
在程序中debug看到对象中存的也是:1.2345678E7
在不修改字段类型的情况下,怎么解决?
注:jdk1.6 ,oracle 10g 页面是jsp
在显示时候调用的是Double类的toString()方法。原因如下:
而Double的toString()方法实际是调用了FloatingDecimal类的toJavaFormatString()方法,如下图
研究源码发现:科学计数法展示是因为FloatingDecimal类的decExponent属性
那么decExponent属性究竟是什么呢?简单来说,
就是小数点向左移动decExponent就是正数,向右移动就是负数。移动几位就是几。
而具体移动规则是移动到小数点左边为0,右边为非0时候停止。
参考技术A 数据库里面用Varchar2来保存,java中用String。可以解决问题。追问我问的是,在不修改字段类型的情况下,怎么解决?
追答用java.util.BigDecimal类。这是java里专门处理高精度数据的类。
java的double的大数值时 怎么才能不显示成
double类型直接打印或者输出的时候,如果数值过大就会转换成科学计数法,所以要自己定义方法,将double类型的值格式化输出,转换成你想要的格式的字符串就可以了 参考技术A 输出时,使用System.out.format()在命令行窗口中能有更好的格式控制。类似于C语言中的printf一样,比如,System.out.format("这是格式化输出:%1$6.2f", 6.22e23);如果用在GUI界面里,可以使用String.format用一样的方法构造出所需要的串,再显示在组件上。不仅对double的输出有效,任何数据都可以带有格式地组合输出。
以上是关于java中数值类型转换的问题,double类型显示科学计数法了。的主要内容,如果未能解决你的问题,请参考以下文章