Oracle NUMBER 数据类型中的精度和小数位数是啥意思

Posted

技术标签:

【中文标题】Oracle NUMBER 数据类型中的精度和小数位数是啥意思【英文标题】:What does precision and scale means in the Oracle NUMBER data typeOracle NUMBER 数据类型中的精度和小数位数是什么意思 【发布时间】:2012-05-26 13:31:59 【问题描述】:

我一直在阅读 Oracle DB 初学者指南。精度和规模的定义相当混乱。 书上说:

number(6,3) 

Oracle allows for 2 not 6 significant digitalis.

我的问题是,6 表示精度。这意味着有效数字的数量。所以它应该接受 6 位有效数字。为什么书上说是2位有效数字

我指的书是Oracle Database 11g A Beginner's Guide by McGraw Hill Professional, Dec 18, 2008,第12页

【问题讨论】:

【参考方案1】:

查看在线Oracledoc:

p 是精度,或最大有效小数位数 数字,其中最重要的数字是最左边的非零 位,最低有效位是最右边的已知数字。 Oracle 保证数字的可移植性,精度高达 20 个 base-100 数字,相当于 39 或 40 个十进制数字 取决于小数点的位置。

s 是小数位数,或从小数点到小数点的位数 最低有效位。范围可以从 -84 到 127。

正数是右边的有效位数 小数点到并包括最低有效数字。

负数是左边的有效位数 小数点,但不包括最低有效位。为了 负刻度最低有效位在左侧 小数点,因为实际数据是四舍五入到指定的 小数点左边的位数。例如,一个 (10,-2​​) 的规格意味着四舍五入到数百。

【讨论】:

以上是关于Oracle NUMBER 数据类型中的精度和小数位数是啥意思的主要内容,如果未能解决你的问题,请参考以下文章

oracle中number类型 默认长度是多少

ORACLE 中NUMBER类型默认的精度和Scale问题

oracle中number数值类型

在oracle中number类型的字段长度是啥意思

Oracle Number 数据类型及其严格性

oracle字段类型NUMBER(38,3),括号中两个数字分别表示啥?