【发布时间】:2020-12-02 22:33:04
【问题描述】:
我阅读了 oracle 文档,数据库中数据类型“数字”的范围是 38,这是最大范围。
我用谷歌搜索,除了 38 是业力法则,守护天使之外找不到任何东西......
你介意解释一下为什么数字的范围是 38 吗?
谢谢!
【问题讨论】:
标签: oracle sqldatatypes
我阅读了 oracle 文档,数据库中数据类型“数字”的范围是 38,这是最大范围。
我用谷歌搜索,除了 38 是业力法则,守护天使之外找不到任何东西......
你介意解释一下为什么数字的范围是 38 吗?
谢谢!
【问题讨论】:
标签: oracle sqldatatypes
这是精确度(与业力或天使无关:))。
Documentation 表示号码的格式是NUMBER [ (p [, s]) ]:
具有精度 p 和标度 s 的数字。精度 p 的范围可以从 1 到 38。标度 s 的范围可以从 -84 到 127。精度和标度都是十进制数字。 NUMBER 值需要 1 到 22 个字节。
精度是数字中的位数。例如,数字123.45 有5 位数,因此其精度为5。
刻度是小数点右边的位数;在本例中,45 生成了 2 数字,因此比例为 2。
这意味着(如果我们假设数字看起来像那样)您创建的表看起来像
create table (some_value NUMBER (5, 2)); --> precision 5, scale 2
如果您违反精度,Oracle 将引发错误。另一方面,您可以违反规模 - 在这种情况下,Oracle 将四舍五入该值。
【讨论】: