精度和小数位数有什么区别?


141

Oracle中的精度和规模之间有什么区别?在教程中,他们通常将标度留空,并在创建主键时将精度设置为6。

精度和刻度代表什么?

Answers:


203

精确度4,比例2:99.99

精度10,小数位0:9999999999

精确度8,比例3:99999.999

精度5,小数位数-3:99999000


15
您能解释一下负秤的行为吗?
极客

2
看起来像是
舍入

3
请记住,精度始终包括比例部分。例如:Precision 4,scale 2-将失败任何大于99.9999 ..的数字;试试:从对偶中选择强制转换(99.99999作为NUMBER(4,2));//好; 从对偶中选择强制转换(100.9作为NUMBER(4,2));//失败;
Jama Djafarov'3

@JamaDjafarov 99.99999失败,如下所示:`21:53:54 CB900 @ XYZ>从对偶中选择强制转换(99.99999作为NUMBER(4,2));从对偶中选择强制转换(99.99999作为NUMBER(4,2))*在第1行出现错误:ORA-01438:值大于此列允许的指定精度21:52:32 CB900 @ ASCEND1>从v $ instance中选择版本;版本------------------------------------------------- -12.1.0.2.0`–
Phalgun

@Phalgun从DUAL中选择强制转换(99.9999作为NUMBER(4,2)); 这是一个不好的例子,因为截断会将数字从99舍入到100,这对于NUMBER(4,2)而言太大了。尝试从DUAL中选择cast(88.8888作为NUMBER(4,2));相反,看到的响应是88.89。
superbeck

58

精度是有效位数。Oracle保证数字的可移植性,精度范围为1到38。

小数位数是小数点右边(正)或左边(负)的位数。比例尺范围从-84到127。

在您的情况下,精度为6的ID表示它将不接受具有7个或更多有效数字的数字。

参考:

http://download.oracle.com/docs/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT1832

该页面上还有一些示例,这些示例将使您理解精度和规模。


1
那意味着最后一个燃烧室将是1000000?
user700792

9
+1:我认为了解这一点的关键是了解内部数字格式-尾数和指数。精度限制了尾数的长度,比例限制了可能的最小指数。
David Aldridge

@DavidAldridge我回应你。我认为您应该考虑将其发布为有关尾数和指数的答案。数字实际上以可变长度格式存储。
Lalit Kumar B 2015年

55

精度是数字的总数,可以是1和38之间的
比例是小数点后的数字位数,也可以为舍入设定为负。

示例:
NUMBER(7,5):12.12345
NUMBER(5,0):12345

在ORACLE网站上的更多详细信息:https :
//docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT1832


比例是指小数点右边(正数)或左边(负数)的位数,而不仅仅是小数点之后的位数。
Lalit Kumar B

看一下koljaTM的例子。精度是多少个有效数字,可以有一个值(即,不只是“ 0”作为占位符)。刻度表示相对于小数点的降幅。小数位数可以是负数,表示您不关心0以上的精度。NUMBER(1,-4):仅允许10个值:00000、10000、20000 ... 90000
戈登

1
精度不只是位数的总和。正如大卫·奥尔德里奇(David Aldridge)在对manojlds的评论中所解释的那样,尾数即是您关心的有效位数。标度被认为是指数是一个更准确的解释,尽管它很深奥。任何负刻度将在小数点后没有数字,并且在小数点左边将有那么多0作为占位符。NUMBER(1,-4)将有5位数字,但只有10,000s处的第一个数字将具有您关心的值。
戈登

34

也许更清楚:

请注意,精度是总位数,包括小数位数

NUMBER(精度,比例)

精度8,比例3:87654.321

精度5,比例3:54.321

精度5,比例1:5432.1

精度5,小数位数0:54321

精度5,比例-1:54320

精度5,比例尺-3:54000


19

小数位数是小数点后的位数(或冒号,取决于您的语言环境)

精度是有效数字的总数

标度VS精度


1

精度:小数点之前或之后的总位数。EX:123.456此处的精度为6。

小数位数:小数点后的总位数。EX:123.456在这里Scaleis 3


-5

如果值为9999.988和精度4,小数位数2,则表示9999(代表精度).99(小数位数为2,因此.988舍入为.99)

如果值是9999.9887且精度是4,小数位是2,则表示9999.99


7
不,精度是要存储的有效位数。在这两种情况下,你的存储精度为6,规模为2
大卫·阿尔德里奇
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.