解决方案 »

  1.   

    JAVA里面有没有DECIMAL?还有一种处理办法是乘以10 然后输出结果的时候除以10
      

  2.   

    先把float转换成decimal 或者 numeric试试
      

  3.   

    你的意思是数据是存储在sql server里面,字段类型是float的235.5,但到了java里的double类型,就变成了一长串是把,但在java应该也有float类型的吧。实在不行,就把数据库里的类型改为numiric(30,2)
      

  4.   

    float和real是不精确的数据类型,double同样也是。
    decimal和numeric才是精确的数据类型。
      

  5.   

    用了框架
    org.apache.commons.dbutils.QueryRunner qr = new QueryRunner();String sql="select x from tab_abc";
    List<Map> results = (List<Map>) qr.query(conn, sql);
    double x = (Double)results.get(0).get("x");
    //float x = (Float)results.get(0).get("x");数据库中是float类型
    //java.lang.Double cannot be cast to java.lang.Float我想是框架封装时自动转成double类型的java允许隐式float->double,double->float需要强转,这是我们都知道的
    那么为什么上面强转还是报错呢?原因是:
    float->double,double->float  都是基本类型   基本类型之间可以转化
    Float->Double,Double->Float  都是引用类型   引用类型除非是父子关系,否则无法强转
    所以该框架封装时自动转成Double引用类型,而不是double基本类型
    然后:
    说回实际开发,
    话说你们是如何操作小数的?float和double每一毫秒都可能出现偏差的啊float和double类型的主要设计目的是为了科学计算和工程计算。它们执行二进制浮点运算,所以不应该被用于要求精确结果的场合。作为一款正常的软件,追求的肯定是精确的数据,所以推荐使用
    BigDecimal来处理小数的问题,
    对于整数,不是大数的话,我们的程序里还是充满了int和long的,这是没问题的所以嘛,以后打死不用浮点数了,这么坑啊,BigDecimal才是我的希望!!!
      

  6.   


    float和double确实不精确,所以一般都用numeric或者decimal(两个是同义词),最大可以表示10的38次方的整数,或者是相应的小数。
      

  7.   

    我一般对于这种小数,都是在数据库中用的real类型,这个话java无论用double还是float解析都OK
      

  8.   

    不知道你的编程语言里有没有Currency类型,你可以把其转换为Currency类型就可以精确表示了。千万不要用Float进行精确比较,因为很多时候你是得不到你想要的结果的,这和Float存储表方式有关。