正 文

Oracle中的IEEE754数据类型


www.7dspace.com  更新日期:2005-11-7 2:59:34  七度空间


Oracle用一种不常用的NUMBER数据类型来存储数据,该类型使用BCD码(用16进制0x99来代表十进制的99)。ANSI标准数据类型,比如INTEGER,FLOAT,以及DOUBLE都是NUMBER数据类型的别名。INTEGER数据类型不支持十进制,FLOAT,以及DOUBLE来约束数据以满足整数类型的数据。

IEEE 754 标准格式是绝大多数计算机操作系统和程序设计中最为普通的格式。浮点型数据的内部格式通常存储为32位(浮点型)或者64位(双精度型)。

当数据从数据库传递到开发语言环境时,数据需要从一种格式转化为其它的格式。当进行数据转换时,有可能造成数据精度上的丢失。同样,数据从一种类型转换为另一种类型的过程也会影响程序的性能,因为大范围的数据需要转换。

在Oracle 10g中,Oracle调用接口(Oracle Call Interface),一个列,或者PL/SQL变量都可以使用BINARY_FLOAT或BINARY_DOUBLE数据类型。在开发环境中,比如Java,这些数据类型之间不需要进行数据的转换。

而这其中的过程是以运行速度与精度作为交换的。Oracle内部数据能够精确地存储38个数字。IEEE 754浮点型数据只能以二进制存储7个数字,而且IEEE数据也存在“逐渐下溢(gradual underflow)”的问题,因为二进制数据通常是一些重复的数字。比如,0.1在Oracle是一个准确的数据,但当它转化为二进制时会出现很多重复的数字。

本文作者:Scott Stephens在Oracle公司工作已经长达13年,他的研究领域包括技术支持,电子商务,市场,以及软件开发。


上一篇:忘却Oracle的5个方面
下一篇:在Windows中使用Oracle objects for OLE
作者:Scott Stephens  来源:开发者在线 ( 责任编辑:7dspace )
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐