sqlserver浮点数float转换成double,怎么解决? sqlserver数据库QueryRunnerfloatdouble 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 JAVA里面有没有DECIMAL?还有一种处理办法是乘以10 然后输出结果的时候除以10 先把float转换成decimal 或者 numeric试试 你的意思是数据是存储在sql server里面,字段类型是float的235.5,但到了java里的double类型,就变成了一长串是把,但在java应该也有float类型的吧。实在不行,就把数据库里的类型改为numiric(30,2) float和real是不精确的数据类型,double同样也是。decimal和numeric才是精确的数据类型。 用了框架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才是我的希望!!! float和double确实不精确,所以一般都用numeric或者decimal(两个是同义词),最大可以表示10的38次方的整数,或者是相应的小数。 我一般对于这种小数,都是在数据库中用的real类型,这个话java无论用double还是float解析都OK 不知道你的编程语言里有没有Currency类型,你可以把其转换为Currency类型就可以精确表示了。千万不要用Float进行精确比较,因为很多时候你是得不到你想要的结果的,这和Float存储表方式有关。 【各位大侠帮忙】简单存储过程分页遇到的一个问题 问一个sql server 2005的快捷键。(如何快速找到表) 关于max()和min() 老师们帮忙下吧.这单引号改的我受不了啊,怎么都不对! 一个新的想法。想将数据库的表与字段,做成一个多语言版本的。请高手进来看一看... SQL查询 xp sp3 安装 sql server 2005 新问题 SQL字段中Char問題 100分,如何将查询结果导入到临时表 有关MSDE的问题:我想用MSDE代替MS SQL SERVER7.0桌面版做单机版的 SQL Server数据库开发 求一条SQL语句
decimal和numeric才是精确的数据类型。
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才是我的希望!!!
float和double确实不精确,所以一般都用numeric或者decimal(两个是同义词),最大可以表示10的38次方的整数,或者是相应的小数。