新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
number(14,4)是精确的存储方式。
在墨玉等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站设计、网站建设 网站设计制作按需网站制作,公司网站建设,企业网站建设,高端网站设计,成都全网营销推广,外贸网站建设,墨玉网站建设费用合理。
存储 999999.9999 肯定不会会出现 四舍五入 的情况
应该是你自己的处理有问题吧
我这样试过了,肯定没有问题的:
create table t_test1(a number(14,4));
insert into t_test1 values(999999.9999);
select * from t_test1;
drop table t_test1;
假设列名为culm
select * from tableA
where length ( trunc ( to_char(culm) , instr(to_char(culm),'.') ) )=6;
instr(to_char(culm),'.') 这个表示小数点的点号在数值的位置,从这之后截取,然后计算长度,限定为6就可以了
oracle精度会自动截取。根据查询相关资料信息显示,ROUND按照指定的精度进行四舍五入,oracle中对查询出来的数据进行自动切割、截取等操作。Oracle中的取精度函数常用的有ROUND函数、TRUNC函数、FLOOR函数和CEIL函数。
NUMERIC(p,s):完全映射至NUMBER(p,s)。如果p未指定,则默认为38.
DECIMAL(p,s)或DEC(p,s):完全映射至NUMBER(p,s)。如果p为指定,则默认为38.
INTEGER或INT:完全映射至NUMBER(38)类型。
SMALLINT:完全映射至NUMBER(38)类型。
FLOAT(b):映射至NUMBER类型。
DOUBLE PRECISION:映射至NUMBER类型。
REAL:映射至NUMBER类型。
以上这些类型只是oracle在语法上支持的,在底层实际上还是number
1.表示的数值范围
NUMBER:Oracle NUMBER类型能以极大的精度存储数值,具体来讲,精度可达38位。其底层数据格式类似一种
“封包小数“表示。Oracle NUMBER类型是一种变长格式,长度为0~22字节。它可以存储小到10e-130、
大到(但不包括)10e126的任何数值。这是目前最为常用的数值类型。也是Oracle9i Release 2及以
前的版本只支持的唯一一种适合存储数值数据的固有数据类型,其他一起兼容类型只是一种和number
之间的映射,在底层实际上都是number
BINARY_FLOAT:这是一种IEEE固有的单精度浮点数。它在磁盘上会占用5字节的存储空间:其中4个固定字节用
于存储浮点数,另外还有一个长度字节。BINARY_FLOAT能存储有6为精度、范围在~±1038.53
的数值
BINARY_DOUBLE:这是一种IEEE固有的双精度浮点数。它在磁盘上会占用9字节的存储空间:其中8个固定字节用
于存储浮点数,还有一个长度字节。BINARY_DOUBLE能存储有12.位精度、范围在~±10308.25的
数值。
取值范举例:
创建测试表t2
SQL create table t2
2 ( num_type number,
3 float_type binary_float,
4 double_type binary_double
5 );
Table created
插入测试数据1
SQL
SQL insert into t2
2 (num_type, float_type, double_type)
3 values
4 (1234567890.0987654321, 1234567890.0987654321, 1234567890.0987654321);
1 row inserted
查看测试数据1
SQL
SQL select to_char(num_type),
2 to_char(float_type, '999999999999.999999999'),
3 to_char(double_type, '99999999999.9999999999')
4 from t2
5 ;
TO_CHAR(NUM_TYPE) TO_CHAR(FLOAT_TYPE,'9999999999 TO_CHAR(DOUBLE_TYPE,'999999999
--------------------------- -----------------------------------------------------------------------------------
1234567890.0987654321 1234567940.000000000 1234567890.0987654000
数据库操作很容易常见的问题,java.math.BinInteger类和java.math.BigDecimal类,你可以用下这两个,这两个对数据反复操作保真很好,你可以试试
这个是双精度数据的存储问题,既然是double,数据必然存在这样的问题。
所以,你可以在需要显示的时候,进行格式化,
c里面 的格式 好像是 ".2f%",proc应该也有对应的功能,你找一下。