不同于以往‘四舍五入’造成数据偏差大,关于’四舍六入五成双‘百科中有详细介绍:
http://baike.baidu.com/link?url=J6Vpvz43LDPvnvQzM2moQVyfVAB17BqKy965Bm6bkpSUpREosuCDxY_dDbCIGcsYHFE1tuZcAxkpI9J37n2zDa
计算规则:
1. 被修约的数字等于或小于4时,该数字舍去;
2. 被修约的数字等于或大于6时,则进位;
3. 被修约的数字等于5时,要看5前面的数字,若是奇数则进位,若是偶数则将5舍掉,即修约后末尾数字都成为偶数;若5的后面还有不为“0”的任何数,则此时无论5的前面是奇数还是偶数,均应进位。【当5后有数时,舍5入1;当5后无有效数字时,分两种情况:①5前为奇数,舍5入1;②5前为偶数,舍5不进。(0是偶数)】
自定义函数:
CREATE OR REPLACE FUNCTION ROUND2(P1 IN NUMBER, P2 IN NUMBER) RETURN NUMBER
AS
BEGIN
IF TRUNC(P1,P2+1)<>P1 OR SUBSTR(P1*POWER(10,P2+1),-1)<>'5' OR MOD(SUBSTR(P1*POWER(10,P2+1),-2,1),2)=1
THEN
RETURN ROUND(P1,P2);
ELSE
RETURN TRUNC(P1,P2);
END IF;
END;
select round(1.15,1)+round(1.25,1)+round(1.35,1)+round(1.45,1) from dual;--5.4
select round2(1.15,1)+round2(1.25,1)+round2(1.35,1)+round2(1.45,1) from dual;--5.2
分享到:
相关推荐
四舍六入五成双:四舍六入五考虑,五后非零就进一,五后皆零看奇偶,五前为偶应舍去,五前为奇要进一。 注:修约时看保留小数的后一位为5时进行修约,其他按四舍五入情况。 修约:五后皆零看奇偶,修约看5前面那一...
### Oracle自定义函数实现四舍六入五单进的数值修约 在处理数值运算时,数据精度的处理是一项至关重要的工作。特别是在金融、统计等领域,对于数据精度的要求非常高,这就需要我们对数值进行精确的修约处理。本文将...
**四舍六入五成双算法**,也称为**银行家算法**,是金融行业中广泛采用的一种精确舍入策略,其核心原则是确保舍入过程的统计平衡性,避免因频繁向一个方向舍入而导致的系统误差。这种算法在处理财务和科学计算时尤其...
本文将详细介绍Oracle中的三种常见舍入方法:去尾法(Truncation)、四舍五入法(Rounding)以及收尾法(Ceiling)。这些方法对于数据处理、报表生成等场景非常有用。 #### 29.1 去尾法(Truncation) 去尾法是指...
经常为四舍五入的方法烦恼,新的思路重写四舍五入,并可以根据小数位数自动格式化,适合于数值型表格显示,该思路可适用于任何系统或数据库,代码比较乱,欢迎指正。
select round(1.66,1) from dual;-- 四舍五入,精确到1位小数 select round(1.56) from dual;-- 四舍五入,无小数 select trunc(89.115,2) from dual;-- 保留到小数位数
在Oracle数据库中,SQL语句提供了多种方法来处理数字,包括取整、四舍五入以及数字格式化等。这些功能对于数据处理和分析至关重要,特别是在财务、统计和其他需要精确数值计算的领域。 1. 向下取整: Oracle提供了...
Oracle 中实现 Split 函数功能 Oracle 中实现 Split 函数功能是指在 Oracle 数据库中实现类似于 C# 等编程语言中的 Split 函数,用于拆分字符的功能。下面是实现 Oracle 中 Split 函数功能的详细介绍。 首先,...
根据给定的信息,本文将详细解释如何在Oracle数据库中计算从2000年1月1日至今经过了多少个月和多少个星期,并且结果需要进行四舍五入处理。 ### Oracle数据库中的日期函数 在Oracle数据库中,进行日期计算是非常...
一个用 Oracle 编写货币大写转换(用过程编写支持转换小数点并且有四舍五入)
WPS计算应用编码****
一个用 Oracle 编写货币大写转换(函数可转换小数点并支持四舍五入)
在oracle中利用函数实现计算公式解析|在oracle中利用函数实现计算公式解析
当给表中插入数据时触发触发器,触发器从序列中得到相应的数值放入相应的位置,这样实现属性的自增。 知识点一: Oracle 中没有 auto_increment 属性 Oracle 中没有像 MySQL 中一样的 auto_increment 属性来实现...
- **解释**:该示例中,1.2345被四舍五入到3位小数后变成了1.235。 ##### 2. **TRUNC 函数 - 截断** - **函数定义**:`TRUNC(number, [decimal_places])` - `number`:需要处理的数字。 - `decimal_places`:...
在.NET开发环境中,连接Oracle数据库通常需要...通过以上步骤,你便可以成功地在C#.NET应用中实现远程Oracle数据库的连接,而无需安装完整的Oracle客户端。这种方法特别适用于开发和测试环境,减少了系统的维护成本。
oracle中实现列转行实例,有表的创建,数据的插入,查询的sql
会议管理系统项目servlet+jdbc+oracle的实现 会议管理系统项目servlet+jdbc+oracle的实现 会议管理系统项目servlet+jdbc+oracle的实现 会议管理系统项目servlet+jdbc+oracle的实现 会议管理系统项目servlet+jdbc+...
oracle存储过程中入参是逗号分隔,并且参数要使用在in过滤语句中查询数据。处理的方法与实现