数据库: sql server 2008,数据类型 real;数据层: ibatis;程序对应字段类型:Double。问题:数据库1.8的数据,程序取出来后变成了1.7999999523162842,字段类型改为float,则是正确的1.8,但是使用JSONArray 把对象列表转为JSON数组的时候,该属性的值在JSON数组中又变成了1.7999999523162842。
请问怎么解决? 

解决方案 »

  1.   

    转json的时候把1.8当成String转就不会出现精度丢失的问题了。。
      

  2.   

    BigDecimal a = new BigDecimal(1.2);
    double b = (a.doubleValue());
    正确方法应该是使用用这个类去转!得到的正确的结果
      

  3.   


    请问怎么在转的时候 指定某个字段按String规则转?
      

  4.   

    谢谢,但是我用的工具JAR包json-lib-2.2.1-jdk15.jar直接转的,用的是JSONArray的fromObject方法。另外我觉得,转JSON数组是附带问题,根源还是在从数据库取数据的问题上。是取出来就不对。
      

  5.   

    已经解决了,数据库类型的原因,real类型本身不精确,改为decimal就好了,对应字段用Double