db中是decimal类型的话,数据又很大的话,queryForList 就会把数据转换成科学记数法的.不知道怎么能1\使用queryForList不要转换成科学计数法
或者
2\在不知道科学计数法规则的前提下,获得科学计数法数据后在转换成正常数据

解决方案 »

  1.   

    楼主,我怀疑你说的科学记数法,只是输出形式而已。因为如果数据库中是个decimal,你对应的DAO字段肯定也是long,double什么的(甚至BigDecimal),
    内部肯定还是正确的数值,在System.out.println()的时候,系统显示成了科学技术的格式。可以试试NumberFormat转换,跟格式化日期一个道理:public static void main(String[] args) throws Exception{ 
         NumberFormat nf=NumberFormat.getInstance();
         nf.setMaximumFractionDigits(6);
         nf.setMaximumIntegerDigits(30);
         nf.setParseIntegerOnly(false);
         nf.setGroupingUsed(false);
        
         double num=111111111111111D/3.1D;//换成你从数据库查的数
         System.out.println(num);
         System.out.println(nf.format(num));
        }
      

  2.   


    我是Mysql的数据库啊,DB中字段的类型是decimal啊.我system queryForList 的时候list里面如果数据过大就有这样的格式"4.0331776E7",数据小就每问题.我用您提供的方法以后,后台报错,说含有一个以上的小数点.提示如下
    java.lang.NumberFormatException: multiple points
    sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1084)
    java.lang.Double.parseDouble(Double.java:510)
      

  3.   

    我是Mysql的数据库啊,DB中字段的类型是decimal啊.我System.out.println(JdbcTemplate.queryForMap("sql")) 的时候如果值过大,超过8位,就会变成这样的格式"4.0331776E7",数据小就没问题.我用您提供的方法以后,后台报错,说含有一个以上的小数点.提示如下 
    java.lang.NumberFormatException: multiple points 
    sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1084) 
    java.lang.Double.parseDouble(Double.java:510) 
      

  4.   

    而且JdbcTemplate.queryForMap("sql"))返回的map里数据库里是int类型的数据竟然还带.0不知道为什么
      

  5.   

    对于decimal类型这种浮任意精度数值
    SQL标准要求缺省的比例是 0。也就是转化成整数精度。
    我们觉得这样做有点没用。如果你关心移植性,那你最好总是明确声明精度和比例。
    如果一个要存储的数值的比例比字段声明的比例高, 那么系统将尝试圆整该数值到指定的小数位。
    然后,如果小数点左边的数据位数超过了声明的精度减去声明的比例, 那么抛出一个错误。 
    数值数据值物理上是不带任何前导或者后缀零的形式存储的。
     因此,字段上声明的精度和比例都是最大值,而不是固定分配的。建议你修改数据库的表的类型,为其制定最大精度和比例就可以了
      

  6.   

    queryList返回的列表里面int类型不带0吗?
      

  7.   

    一般超过精度要求才出现科学计数形式。其次是输出显示,例如EXCEL本身有时候就将大数据显示为科学计数法,将其变成文本即可。以前的项目是将精确数据整成字符类型,而非数据类型。字符串才能无限延伸。
    new java.math.BigDecimal(string value).toPlainString()