官方文档:https://docs.oracle.com/en/database/oracle/oracle-database/19...
图片:
number(m,n)里,m是包括整数和小数部分的总位数吧,如果总位数限制为2,那小数位数限制为7有什么意义呢?
如果红框的值是0.9999912,那stored as的值是多少?
官方文档:https://docs.oracle.com/en/database/oracle/oracle-database/19...
图片:
number(m,n)里,m是包括整数和小数部分的总位数吧,如果总位数限制为2,那小数位数限制为7有什么意义呢?
如果红框的值是0.9999912,那stored as的值是多少?
在Oracle数据库中,NUMBER
数据类型用于存储固定和浮点数。NUMBER(m,n)
的定义中,m
是数字的总位数(包括小数点左边和右边的位数),而 n
是小数点右边的位数(即小数位数)。
m是包括整数和小数部分的总位数吧?
m
是包括整数部分和小数部分的总位数。如果总位数限制为2,那小数位数限制为7有什么意义呢?
m
的值小于 n
的值加上小数点左侧至少需要的位数(至少为1,除非数字是0或负数),这样的定义实际上是不合法的。例如,NUMBER(2,7)
是不合法的,因为小数部分就需要7位,加上至少1位的整数部分,总数至少为8位,超出了 m
指定的2位。m
会远大于 n
,以确保有足够的空间来存储整数部分和小数部分。如果红框的值是0.9999912,那stored as的值是多少?
NUMBER(m,n)
,并且 m
和 n
的值足够大以存储 0.9999912
(例如 NUMBER(10,7)
或更大),则存储的值将是 0.9999912
。m
和 n
的值不足以存储整个数字(如 NUMBER(5,2)
),则Oracle会根据四舍五入规则进行舍入。在这种情况下,0.9999912
将无法直接存储为 NUMBER(5,2)
,因为它需要至少7位小数。如果尝试存储,则可能得到类似 1.00
的结果(取决于具体的四舍五入逻辑和精度损失)。m
的值足够大,以包含你希望存储的数字的整数部分和小数部分。n
指定了小数点后的位数,但不应超过 m
允许的总位数。0.9999912
,你需要一个至少为 NUMBER(8,7)
或更大的数据类型来精确存储它,以避免精度损失。2 回答1.1k 阅读✓ 已解决
2 回答1.3k 阅读
2 回答1k 阅读
1 回答1.3k 阅读
745 阅读
710 阅读