如果我想存储非常小的数字(例如0.0000034)
,我应该使用哪种数据类型如果我使用数字(10,9)数据类型,输入0.000001,它将被存储为0.000001000还是仅存储0.000001?
答案 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个字节。
祝你好运。