oracle number类型

NUMBER类型详细介绍:

在Oracle中Number类型可以用来存储0,正负定点或者浮点数,可表示的数据范围在

1.0 * 10(-130) —— 9.9...9 * 10(125) {38个9后边带88个0}

的数字,当Oracle中的数学表达式的值>=1.0*10(126)时,Oracle就会报错。

Number的数据声明如下:

定点数的精度(p)和刻度(s)遵循以下规则:

当一个数的整数部分的长度> p-s 时,Oracle就会报错

当一个数的小数部分的长度> s 时,Oracle就会舍入。

当s(scale)为负数时,Oracle就对小数点左边的s个数字进行舍入。

当s > p时, p表示小数点后第s位向左最多可以有多少位数字,如果大于p则Oracle报错,小数点后s位向右的数字被舍入.

原文地址:https://www.cnblogs.com/tonysengj/p/12058458.html

时间: 2024-08-27 09:56:07

oracle number类型的相关文章

Oracle number类型查询精度丢失的解决方法

Oracle number类型查询时,有时候会遇到精度丢失的问题,下面为您介绍了一个解决Oracle number类型查询精度丢失的方法,供您参考. 一.Oracle number类型查询需求中要求查到一个字段的值然后保持小数点后2位//如果采用如下方法从ResultSet得到一个数字,而这个数字大于40000,则得到的数据将不准确 floatzcxxhj+=rss.getFloat(3); //而如果采用double就没有问题 doublezcxxhj+=rss.getDouble(3); /

ORACLE NUMBER类型Scale为0引发的问题

今天遇到了一个很有意思的NUMBER类型Scale引发的问题,我用一个简单的测试用例来展示一下这个案例.假如有个TEST的表,有个字段类型为NUMBER,我插入下面两条数据 CREATE TABLE TEST (      Category VARCHAR(12),      QTY  NUMBER )   INSERT INTO TEST SELECT 'M', 12 FROM DUAL UNION ALL SELECT 'C', 0.99999999999999999 FROM DUAL;

Oracle number类型 的最大值是多少

Oracle的NUMBER类型最多由三个部分构成,这三个部分分别是最高位表示位.数据部分.符号位.其中负数包含符号位,正数不会包括符号位.另外,数值0比较特殊,它只包含一个数值最高位表示位80,没有数据部分. 正数的最高位表示位大于80,负数的最高位表示位小于80.其中一个正数的最高位是个位的话,则最高位表示位为C1,百位.万位依次为C2.C3,百分位.万分为依次为C0.BF.一个负数的最高位为个位的话,最高位表示位为3E,百位.万位依次为3D.3C,百分位.万分位依次为3F.40. 数据部分每

ORACLE 中NUMBER类型默认的精度和Scale问题

在ORACLE数据库中,NUMBER(P,S)是最常见的数字类型,可以存放数据范围为10^-130~10^126(不包含此值),需要1~22字节(BYTE)不等的存储空间.P 是Precison的英文缩写,即精度缩写,表示有效数字的位数,最多不能超过38个有效数字.S是Scale的英文缩写,表示从小数点到最低有效数字的位数,它为负数时,表示从最大有效数字到小数点的位数.有时候,我们在创建表的时候,NUMBER往往没有指定P,S的值,那么默认情况下,NUMBER的P.S的值分别是多少呢?相信这个问

oracle中int类型和number类型区别

INT类型是NUMBER类型的子类型.下面简要说明:(1)NUMBER(P,S)该数据类型用于定义数字类型的数据,其中P表示数字的总位数(最大字节个数),而S则表示小数点后面的位数.假设定义SAL列为NUMBER(6,2)则整数最大位数为4位(6-2=4),而小数最大位数为2位.(2)INT类型当定义整数类型时,可以直接使用NUMBER的子类型INT,顾名思义:INT用于整型数据. oracle本来就没有int类型,为了与别的数据库兼容,新增了int类型作为number类型的子集.int类型只能

oracle中的number类型

number 数据类型 number (precision,scale) a)    precision表示数字中的有效位,如果没有指定precision的话,oracle将使用38作为精度: b)    如果scale大于零,表示数字精度到小数点右边的位数:scale默认设置为0:如果scale小于零,oracle将把该数字取舍到小数点左边的指定位数. c)    Precision 的取值范围是[1-38];scale的取值范围是[-84-127]. d)    Number整数部分允许的长

ORACLE 中NUMBER 类型 低精度转换成高精度

例如: 表User中有一个字段 salary  Number(10,3), 如果想把字段salary的类型提高精度到salary  Number(10,6),保留六位小数, 解决办法:1,ALTER TABEL USER MODIFY SALARY NUMBER(13,6); 解释:number类型刚开始是,长度10位,3位小数,如果想增加3位小数,对应的长度也必须增加,否则无法修改.所以NUMBER(13,6);这样就可以提高精度了, ORACLE 中NUMBER 类型 低精度转换成高精度

对于Oracle中Number类型的字段映射成Java中的具体类型的问题

我在Oracle中给一个用户Id字段设置为Number类型,使用JDBC在完成ORM的时候,以为其可以自动转换为Integer,因为我的POJO类id舒心实用的就是Integer.但事实是,我在测试的时候,发现所有的用户id全为null,还在奇怪明明数据库中id是有值的,为什么取不到? 原因在于Oracle的Number类型映射为Java类型中的 java.math.BigDecimal (不可变的.任意精度的有符号十进制数)类型,并不是我简单认为的 Integer ,还会报一个错误: 就是说B

float和double的范围和精度,Oracle的Number类型

double.float都是浮点型.double(双精度型)比float(单精度型)存的数据更准确些,占的空间也更大.double精度是float的两倍,所以需要更精确的计算常使用double. 单精度浮点数在机内占4个字节,用32位二进制描述.双精度浮点数在机内占8个字节,用64位二进制描述. 浮点数在机内用指数型式表示,分解为:数符,尾数,指数符,指数四部分.数符占1位二进制,表示数的正负.指数符占1位二进制,表示指数的正负.尾数表示浮点数有效数字,0.xxxxxxx,但不存开头的0和点指数