`
wlh269
  • 浏览: 455534 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Oracle number类型查询精度丢失问题

    博客分类:
  • J2SE
阅读更多
	
一、需求中要求查到一个字段的值然后保持小数点后2位
	//如果采用如下方法从ResultSet得到一个数字,而这个数字大于40000,则得到的数据将不准确
	float	zcxxhj+=rss.getFloat(3);
	//而如果采用double就没有问题
  double	zcxxhj+=rss.getDouble(3);
	
	//四舍五入小数点后2位
	list.add(new BigDecimal(zcxxhj).setScale(2, BigDecimal.ROUND_HALF_UP));
 
 二,如果要求从数据库查出来的数保持到小数点后2位,然后直接再前台展示
 那么我们可以采用如下查询方法:
  例子:
	select fpdm,
	       fphm,
	       fkdw,
	       to_char(kprq, 'yyyy-mm-dd'),
	       to_char(xxhj, 'FM9999999999990.00'),
	       Decode(fpzt, '1', '正票', '2', '红票', '3', '废票')
	  from wskp_fpkj_zbxx_111000861071
	 where 1 = 1
	   and nsrsbh = '110999999999999'
	   
其中的xxhj是number类型,我们可以将其通过    to_char(xxhj, 'FM990.00'),保持小树点后最少2位,小数点前面做多3位,最少1位;
	   又如 to_char(xxhj, 'FM9990.0099'),就是保持小数点后最少2位,最多4位,小数点前面做多4位,最少1位
	   
三、如果要求查到的数相加后保持小树点后2位
       		double d=rss.getDouble(3)+ rss.getDouble(4);
	        BigDecimal bigDecimal= new BigDecimal(d).setScale(2, BigDecimal.ROUND_HALF_UP);
	        beanData.setXxhj(bigDecimal.toString());
分享到:
评论
1 楼 xiang37 2011-06-24  
不错,转载了。

相关推荐

    ORACLE 自动类型转换

    但是,这种自动转换可能会导致意料之外的结果,特别是在处理NULL值、精度丢失或格式不匹配时。 4. **问题与风险**:虽然自动类型转换方便了开发,但也会带来潜在的问题。比如,当字符串转换为数字失败时,可能会...

    Oracle 数据类型及存储方式.pdf

    Oracle中的DATE类型存储了世纪、年、月、日、小时、分钟和秒,具体可以达到小数点后三位的秒数精度。由于日期时间型数据需要记录时间信息,其存储格式通常为7个字节。 LOB数据类型包括CLOB、NCLOB和BLOB等,用于...

    基于oracle小数点前零丢失的问题分析

    本文主要探讨的是在处理小于1的小数时,使用`CHAR`类型可能导致小数点前的零被丢失的问题,以及如何通过`TO_CHAR`函数来解决这个问题。 首先,我们要了解问题的起源。当Oracle数据库中的字段用于存储小于1的小数,...

    oracle 如何判断一个字符串能否转换为数字?

    需要注意的是,这种方法有一定的局限性,比如当数字位数过长时可能会导致精度丢失。 ##### 方法二:使用自定义函数 除了使用`TRANSLATE`函数之外,我们还可以编写一个自定义的PL/SQL函数来判断一个字符串是否可以...

    oracle 的数据类型

    - `NUMBER`:这是Oracle中最通用的数值类型,可以存储整数、小数和浮点数,范围广泛,具有38位精度。`NUMBER(p,s)`中,`p`表示总位数(包括整数和小数部分),`s`表示小数部分的位数。 3. **DATE数据类型**: - `...

    Oracle SQL语法速查

    Oracle数据库系统是世界上最广泛使用的数据库管理系统之一,其SQL(结构化查询语言)语法是管理和操作Oracle数据库的核心。本速查涵盖了Oracle SQL中的关键知识点,包括函数、语句、安装与卸载流程以及常用查询工具...

    oracle基础学习资料

    - **Timestamp**: Oracle数据库支持多种时间类型,其中`Timestamp`是最常用的一种,它可以存储日期和时间信息,精度可以达到毫秒级别。这对于需要记录精确时间的应用场景来说非常重要。 #### 三、数据定义语言(DDL...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    varchar2 1~4000字节 可变长度字符串,与CHAR类型相比,使用VARCHAR2可以节省磁盘空间,但查询效率没有char类型高 数值类型 Number(m,n) m(1~38) n(-84~127) 可以存储正数、负数、零、定点数和精度为38位的浮点数...

    oracle中关于flashback闪回的介绍

    ### Oracle Flashback 闪回技术详解 #### 一、引言 在Oracle数据库管理中,闪回技术(Flashback)是一种非常重要的数据恢复工具。它允许用户和管理员以一种简单而有效的方式,恢复误删、误改的数据。本文将详细介绍...

    SQL语句优化规律总结(ORACLE).txt

    了解并合理使用数字类型可以帮助避免意外的数据丢失或精度问题。 通过上述总结,我们可以看出SQL语句优化涉及多个方面,包括但不限于合理的索引设计、查询结构优化、数据类型选择等。正确应用这些原则和技术,可以...

    Oracle数据库笔记

    - `DECIMAL(5,2)`:货币类型,精度与`NUMBER`相同。 - **日期类型**: - `DATE`:表示日期和时间。 - `TIMESTAMP`:更高精度的时间戳类型。 - **SQL语句**: - **分类**: - DQL(Data Query Language):...

    Oracle之创建存储过程.pdf

    - `data_type`指定了参数的数据类型,但不能指定精度,如只能用`NUMBER`而非`NUMBER(2)`。 - `IS`或`AS`标志着过程体的开始,这里可以声明局部变量,不需要`DECLARE`语句。 - `declaration_section`用于声明过程内部...

    oracle获取当前用户表、字段等详细信息SQL

    8. **其他可能感兴趣的文章**: 提到的其他文章涉及到Oracle中的数字字段检测、MyBatis动态SQL、Oracle BLOB类型字段的处理、获取表信息和字段注释、创建自增ID字段、以及处理字段长度超限和清除特殊字符的问题,这些...

    ABAP 笔记 02 关于时间和N(2)的测试。

    然而,由于没有预定义的精度,`N`类型的数据在进行计算时可能会导致精度丢失,因此在处理财务数据等需要精确计算的场景下,通常建议使用带有固定精度和小数位数的数据类型,如`DECIMAL`或`P`。 在ABAP编程中,你...

    oracle常用函数汇总.docx

    - 创建表时,常用字段类型包括`CHAR`、`VARCHAR2`、`NUMBER`(带精度)、`DATE`等。 - 字段顺序和约束设计会影响性能,建议将较小的非空字段放前面,可能为空的字段放后面。 - 可以设定字段默认值、唯一性(`...

    oracle 实际值超过数据库某个字段指定长度报错解决

    当尝试插入或更新的数据超过了该字段的长度限制时,Oracle会抛出错误`ORA-01438`,提示“value larger than specified precision allowed for this column”,即实际值的长度超出了该列允许的最大精度。这个错误通常...

    关于数据库中保留小数位的问题

    此外,处理小数位时还要注意溢出和精度丢失的问题。比如,浮点数类型在存储和计算过程中可能存在微小的误差,而定点数类型虽然能保证精度,但存储空间相对较大,且超出预设精度的运算可能导致错误。因此,在设计...

    PL-SQL用户指南与参考(译)

    在某些情况下,PL/SQL会自动进行类型转换,但这种做法可能会导致数据丢失或精度降低。 **3、显式转换VS隐式转换** 通常推荐使用显式转换,因为它更加安全且易于理解。 **4、DATE值** 对于日期时间类型,需要特别...

Global site tag (gtag.js) - Google Analytics