用于存储非常小的数字的Oracle数据类型

时间:2015-11-10 23:39:37

标签: oracle

如果我想存储非常小的数字(例如0.0000034)

,我应该使用哪种数据类型

如果我使用数字(10,9)数据类型,输入0.000001,它将被存储为0.000001000还是仅存储0.000001?

1 个答案:

答案 0 :(得分:1)

Oracle中的NUMBER类型是一个可变精度,基数为10的浮点值,仅存储表示数字所需的实际数字,在本例中为数字,包含1且指数为-6 。来自Oracle documentation

  

内部数字格式

     

Oracle数据库以可变长度格式存储数字数据。每个值都以科学计数法存储,1个字节用于存储指数,最多20个字节用于存储尾数。结果值限制为38位精度。 Oracle数据库不存储前导零和尾随零。例如,数字412以类似于4.12×102的格式存储,其中1个字节用于存储指数(2),2个字节用于存储尾数(4,1,2)的三个有效数字。负数包括其长度的符号。

     

考虑到这一点,特定数值数据值NUMBER(p)的列大小(以字节为单位),其中p是给定值的精度,可以使用以下公式计算:

     

ROUND((长度为(p)+ S)/ 2))+ 1

     

如果数字为正数,则s等于零,如果数字为负数,则s等于1。

     

使用唯一表示存储零和正无穷大(仅在从Oracle数据库导入时生成,版本5)。零和负无穷大都需要1个字节;正无穷大需要2个字节。

祝你好运。