我一直在努力了解Oracle数据库对数据类型=数字的使用。我跑过以下链接:
我在解释它时遇到了麻烦。我应该提一下我没有Oracle背景,但是从Matlab经验中接近这个。我理解数字数据类型具有精度和规模。我不明白的是如何在这里处理指数。指数是否与精度和规模分开考虑?或者,指数是否受精度和规模的限制?
这是我的困惑 - 上面的链接以:
开头问:我将表格列的数据类型声明为NUMBER&推定它 是数字(38)具体。但我觉得奇怪的是,它是 接受数字beyong 38 digits.ie。 1.111E + 125。如果是Datatype的精度 是38,比例范围可以从-84到127,该值可以插入到列中。
答:我们说...... 1.111e + 125只有4位精度(表示所需的位数) 数字 - 在这种情况下是1111)。
这似乎表明指数与精度和比例分开处理。但是其他人发出的一些消息要求:
问:当我创建一个表格时: 创建表测试(没有数字(7)); 插入测试值(1.00e + 25); 它给出以下错误消息: ORA-01438:大于指定精度的值允许此列。 你可以。解释一下。
答:你说了7位数,你给了它25个
似乎表明指数受精度的限制。希望有人可以帮助我理解两个答案是如何正确的。
答案 0 :(得分:3)
number(7)
是一个(最多)七位数的整数(在“正常”十进制表示中)。请注意,不允许分数。不接受大于9,999,999的数字。这与他们有多少有效数字无关。这是您实施的“业务约束”。
number(7,2)
将是一个七位数字,包括小数点后的两位
number
是一个浮点数,精度为38位(即38位有效数字,无论它们与小数点的位置如何)。指数可以是-84到125之间的任何值。这里没有“业务约束”。您可以存储尽可能多的Oracle存储(38位数和-84到125之间的指数)。
请注意,所有这些数字都存储为十进制数据(以避免在转换为二进制时出现舍入错误),因此“数字”实际上是十进制数字(不是二进制位)。