深圳建设网站top028,青岛seo关键词优化排名,程建网,营销型网站的页面层级Questions: 将表中的某字段类型设计成float(2)后#xff0c;向其插入数据93.5后#xff0c;最好结果却变成了90#xff1f;这是为什么#xff1f; 关于这个问题 官方帮助文档#xff08;Oracle Online Help #xff09;的说明如下#xff1a; FLOAT(b) specifies a floa…Questions: 将表中的某字段类型设计成float(2)后向其插入数据93.5后最好结果却变成了90这是为什么 关于这个问题 官方帮助文档Oracle Online Help 的说明如下 FLOAT(b) specifies a floating-point number with binary precision b. The precision b can range from 1 to 126. To convert from binary to decimal precision, multiply b by 0.30103。 可以看出float(2)中的2是一个binary precision而不是我们常用的decimal precision。他们之间的换算关系是binary precisionint(b*0.30103)因此我们这里实际上的精度应该等于int(2*0.30103)0即小数点后精度为0。 93.5化成浮点型9.35*10^1这时9.35小数点后精度为0成9因此最后变成9*10^190。 倘若将字段设计成float(10)那么int(10*0.30103)3因此若插入93.5就得出9.35–精度为3–9.3509.350*10^193.5。如果插入13884.2得出1.38842–精度为3–1.3881.388*10^413880。
SQL
SQL show user;
USER is SCOTT
SQL
SQL
SQL create table maxwell_float_test2 (a FLOAT(2),3 b FLOAT(10),4 c FLOAT,5 d NUMBER);Table created.SQL INSERT INTO maxwell_float_test(a,b,c,d)VALUES(93.5,93.5,93.5,93.5);1 row created.SQL INSERT INTO maxwell_float_test(a,b,c,d) VALUES(93.665,93.665,93.665,93.665);1 row created.SQL INSERT INTO maxwell_float_test(a,b,c,d) VALUES(96.5,96.5,96.5,96.5);1 row created.SQL INSERT INTO maxwell_float_test(a,b,c,d) VALUES(13884.2,13884.2,13884.2,13884.2);1 row created.SQL commit;Commit complete.SQL select * from maxwell_float_test;A B C D
---------- ---------- ---------- ----------90 93.5 93.5 93.590 93.67 93.665 93.665100 96.5 96.5 96.510000 13880 13884.2 13884.2SQL set pagesize 200 linesize 200
SQL desc maxwell_float_test;Name Null? Type----------------------------------------------------------------------------------------------------------------- -------- ----------------------------------------------------------------------------A FLOAT(2)B FLOAT(10)C FLOAT(126)D NUMBERSQL col name format a10
SQL col type format a10
SQL desc maxwell_float_test;Name Null? Type----------------------------------------------------------------------------------------------------------------- -------- ----------------------------------------------------------------------------A FLOAT(2)B FLOAT(10)C FLOAT(126)D NUMBERSQL 请注意注意 float(b)中的b是二进制的精度进行换算 binary precisionint(b*0.30103)。