IT猫扑网:您身边最放心的安全下载站! 最新更新| 软件分类| 专题汇总| 手机版

您当前所在位置:IT猫扑网 > 操作系统 > LINUX > ORACLE的数据类型float(b)

ORACLE的数据类型float(b)

时间:2015-06-28 00:00 来源:IT猫扑网|http://www.itmop.com/ 作者:网管联盟 我要评论(0)

  把字段类型设计成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 precision=int(b*0.30103),因此我们这里实际上的精度应该等于int(2*0.30103)=0,即小数点后精度为0。

  回到我们原来的问题,93.5化成浮点型9.35*10^1,这时9.35小数点后精度为0,成9,因此最后变成9*10^1=90。

  类似的,我们可以设计成float(10),那么int(10*0.30103)=3,因此,如果插入93.5,就得出9.35--精度为3-->9.350,9.350*10^1=93.5。如果插入13884.2,得出1.38842--精度为3-->1.388,1.388*10^4=13880。

  我们可以从以下测试更加清楚的看到这样的换算规则。

  Connected to Oracle9i Enterprise Edition Release 9.0.1.1.1

  Connected as aspire

  SQL>

  SQL> CREATE TABLE hjm_float_test

  2 (a FLOAT(2),

  3 b FLOAT(10),

  4 c FLOAT,

  5 d NUMBER);

  Table created

  SQL> INSERT INTO hjm_float_test(a,b,c,d) VALUES(93.5,93.5,93.5,93.5);

  1 row inserted

  SQL> INSERT INTO hjm_float_test(a,b,c,d) VALUES(93.665,93.665,93.665,93.665);

  1 row inserted

  SQL> INSERT INTO hjm_float_test(a,b,c,d) VALUES(96.5,96.5,96.5,96.5);

  1 row inserted

  SQL> INSERT INTO hjm_float_test(a,b,c,d) VALUES(13884.2,13884.2,13884.2,13884.2);

  1 row inserted

  SQL> COMMIT;

  Commit complete

  SQL> SELECT * FROM hjm_float_test;

  A B C D

  ---- ------------ -------------------------------------------------------------------------------- ----------

  90 93.5 93.5 93.5

  90 93.67 93.665 93.665

  100 96.5 96.5 96.5

  1000 13880 13884.2 13884.2

  SQL> desc hjm_float_test;

  Name Type Nullable Default Comments

  ---- ------ -------- ------- --------

  A FLOAT Y

  B FLOAT Y

  C FLOAT Y

  D NUMBER Y

  SQL>

  请特别注意的是,虽然我在设计表的时候设计成了float(2)、float(10),但是当我在desc表(代码最后7列)的时候却是看不到这样的设计结构的,这样的问题需要尤其引起注意!!

  最后,让我们回顾一下,记住float(b)中的b是二进制的精度,他的换算规则是binary precision=int(b*0.30103)。

关键词标签:ORACLE,数据类型

相关阅读 安装红帽子RedHat Linux9.0操作系统教程 Tomcat9.0如何安装_Tomcat9.0环境变量配置方法 多种操作系统NTP客户端配置 Linux操作系统修改IP Linux实现SCSI硬盘热插拔及在线识别 Linux下用CDMA modem拨号上网

文章评论
发表评论

热门文章 安装红帽子RedHat Linux9.0操作系统教程 安装红帽子RedHat Linux9.0操作系统教程 Linux服务器:设计高性能网站架构-LLMP Linux服务器:设计高性能网站架构-LLMP 使用Clonezilla迁移到虚拟Linux环境 使用Clonezilla迁移到虚拟Linux环境 Linux上的MRTG流量监控中心 Linux上的MRTG流量监控中心 Linux 双网卡绑定一个IP原理及实现 Linux 双网卡绑定一个IP原理及实现 linux和windows等系统远程控制ubuntu桌面 linux和windows等系统远程控制ubuntu桌面

相关下载

人气排行 Linux下获取CPUID、硬盘序列号与MAC地址 dmidecode命令查看内存型号 linux tc实现ip流量限制 安装红帽子RedHat Linux9.0操作系统教程 linux下解压rar文件 lcx.exe、nc.exe、sc.exe入侵中的使用方法 Ubuntu linux 关机、重启、注销 命令 查看linux服务器硬盘IO读写负载 linux命令行浏览器的使用方法 Linux NFS服务固定端口及防火墙配置 U盘安装Ubuntu 10.04 Linux清除用户登录记录和命令历史方法