ChatGPT解决这个技术问题 Extra ChatGPT

精度和规模有什么区别?

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

精度和比例代表什么?


k
koljaTM

精度 4,比例 2:99.99

精度 10,比例 0:9999999999

精度 8,刻度 3:99999.999

精度 5,比例 -3:99999000


你能解释一下负尺度的行为吗?
看起来像四舍五入/忽略小数点左侧的许多整数值
请记住,精度始终包括比例部分。例如:精度 4,比例 2 - 将失败任何数字 > 99.9999..;尝试:从双重中选择演员(99.99999 as NUMBER(4,2)); //好的;从对偶中选择演员表(100.9 as NUMBER(4,2)); //失败;
@JamaDjafarov 99.99999 失败,如下所示:` 21:53:54 CB900@XYZ > 从双重中选择演员表(99.99999 as NUMBER(4,2)); select cast (99.99999 as NUMBER(4,2)) from dual * 第 1 行出现错误:ORA-01438:值大于该列允许的指定精度 21:52:32 CB900@ASCEND1 > 从 v$instance 中选择版本;版本 - - - - - - - - - - - - - - - - - - - - - - - - - -- 12.1.0.2.0 `
@Phalgun 从 DUAL 中选择 cast(99.9999 as NUMBER(4,2));是一个不好的例子,因为截断会将数字从 99 向上舍入到 100,这对于 NUMBER(4,2) 来说太大了。尝试从 DUAL 中选择 cast(88.8888 as NUMBER(4,2));而是看到响应是 88.89。
A
Ayman

精度是总位数,可以在1到38之间。比例是小数点后的位数,也可以设置为负数进行四舍五入。

示例:数字(7,5):12.12345 数字(5,0):12345

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


Scale 是小数点右侧(正)或左侧(负)的位数,而不仅仅是小数点后的位数。
看看 koljaTM 的例子。精度是多少个有效数字,它可能有一个值(即,不仅仅是“0”作为占位符)。比例表示那些相对于小数点的下降方式。 Scale 可以为负数,表示您不关心的高于 0 的精度。 NUMBER(1,-4):只允许 10 个值:00000、10000、20000...90000
精度不仅仅是位数的总数。正如大卫奥尔德里奇在他对 manojlds 的评论中解释的那样,它是尾数 - 你关心多少有效数字。被认为是指数的比例是一种更准确但深奥的解释。任何负比例在小数点后都没有数字,并且在小数点左侧有那么多的 0 作为占位符。 NUMBER(1,-4) 将有 5 位数字,但只有第一个,在 10,000 位中会有一个您关心的值。
m
manojlds

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

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

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

参考:

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

该页面还包含一些示例,可以让您了解精度和规模。


这意味着最后一个bumber将是1000000?
+1:我认为理解这一点的关键是理解内部数字格式——尾数和指数。精度限制了尾数的可能长度,而比例限制了可能的最小指数。
@DavidAldridge 我回应你。我认为您应该考虑将其发布为关于尾数和指数的答案。数字实际上以可变长度格式存储。
CHAR 数据类型的精度如何?
C
Community

也许更清楚:

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

NUMBER(Precision,Scale) 精度 8,比例 3:87654.321 精度 5,比例 3:54.321 精度 5,比例 1:5432.1 精度 5,比例 0:54321 精度 5,比例 -1:54320 精度 5,比例 -3:54000


y
ylerjen

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

精度是有效数字的总数

https://i.stack.imgur.com/9kRBv.png


B
Bablu Gope

精度:它的小数点之前或之后的总位数。例如:123.456,这里的精度是 6。

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


y
yogi

如果值为 9999.988 且精度为 4,比例为 2,则表示 9999(表示精度).99(比例为 2,因此 .988 舍入为 0.99)

如果值为 9999.9887,精度为 4,比例为 2,则表示 9999.99


不,精度是要存储的有效位数。在这两种情况下,存储的精度都是 6,比例是 2。