做过统计都知道关于保留几位小数有好几种方法,其中4舍6入5凑偶用的比较多,所以我就是sqlserver里面实现了一个自定义函数

定义

对于位数很多的近似数,当位数确定后,其后面多余的数字应该舍去,只保留有效数字最末一位,这种修约(舍入)规则是“四舍六入五成双”,也即“4舍6入5凑偶”,这里“四”是指≤4 时舍去,"六"是指≥6时进上,"五"指的是根据5后面的数字来定,当5后有数时,舍5入1;当5后无有效数字时,需要分两种情况来讲:

(1)5前为奇数,舍5入1;

(2)5前为偶数,舍5不进(0是偶数)。

具体规则

(1)被修约的数字小于5时,该数字舍去;

(2)被修约的数字大于5时,则进位;

(3)被修约的数字等于5时,要看5前面的数字,若是奇数则进位,若是偶数则将5舍掉,即修约后末尾数字都成为偶数;若5的后面还有不为“0”的任何数,则此时无论5的前面是奇数还是偶数,均应进位。

函数

if object_id('fnRound') is not nulldrop function fnRoundGOcreate function fnRound(@num float,@i int)returns varchar(20)asbegindeclare @str varchar(20)     /*转换成字符类型*/declare @str2 varchar(20)    /*小数位数后面的字符串*/declare @str3 varchar(2)     /*小数位数字符串*/set @str = convert(varchar,@num)if (charindex('.',reverse(@str)) <= 0)beginif @i > 0beginset @str = @str + '.'while @i > 0beginset @str  = @str + '0'set @i = @i - 1endendreturn @strendset @str2 = reverse(substring(reverse(@str),1,charindex('.',reverse(@str)) - 1 - @i))set @str3 = substring(@str,charindex('.',@str) + 1,@i)if @str2%5 = 0 and @str3%2 = 0   /*如果符合"五成双"*/set @str = substring(@str,1,charindex('.',@str) + @i)else    /*否则四舍五入*/set @str = convert(varchar,round(@num,@i))RETURN @strendGO

sqlserver varchar 对于 sum 运算符无效_在sqlserver上实现自定义函数四舍六入五成双...相关推荐

  1. mysql 五舍六入_四舍六入五成双(适用于MYSQL)(最大支持小数点第9位)

    ZRound CREATE FUNCTION ZRound(num DECIMAL(38,14) ,i INT) RETURNS varchar(20) BEGIN /*原数据转换成字符类型*/ DE ...

  2. python 人数取整_避免PYTHON取整四舍六入五成双问题

    python中关于round函数的小坑 - _小苹果 - 博客园​www.cnblogs.com 同样的坑:整数a/100 不等于a×0.01 在python2.7的doc中,round()的最后写着 ...

  3. c语言整形除法是五舍六入吗,四舍六入五成双 - C/C++论坛 - 51CTO技术论坛_中国领先的IT技术社区...

    复制内容到剪贴板 代码:#include using namespace std; #define FLENGTH 1000;        //宏定义保留3位小数 double fun(double ...

  4. java 四舍六入五成双_【数据小常识】“四舍六入五成双”

    "四舍六入五成双"规则如下: "四舍六入五成双",也即"4舍6入5凑偶",这里"四"是指≤4 时舍去,"六&q ...

  5. java 四舍六入五成双_显示格式的四舍六入五成双

    一.问题描述 在使用快逸复杂报表设计" target="_blank" class="quieeLink1">设计器时,若单元格内的信息为数值, ...

  6. unity笔记_四舍六入五成双

    float Round(float num, int length)//0.58{string str = num.ToString();//传入整数,没有小数点if (!str.Contains(& ...

  7. python自定义函数返回值_第八讲 python自定义函数返回值

    注意自定义函数:统一文件内函数名称不能相同. 单返回值 语法结构: def function_name([para1,para2...]): code... code... ... return va ...

  8. 操作数数据类型 char 对于 sum 运算符无效。_数据类型和运算符

    数据类型和运算符 1.进制 1.1文件存储单位 ​ 任何数据在计算机中都是以二进制的形式存在的,二进制早期由电信号开关演变而来 . ​ 一个电信号或者一个二进制位统称为Bit位,8个Bit位为一组组成 ...

  9. mysql ifnull 无效_关于MySql中使用IFNULL()函数失效的问题。

    今天在学习时,碰到一个问题:在联表查询取得结果后,如果取得的结果是空值,则给一个默认值,如果不是空值,则返回这个值. 下面我们来看看业务场景: 在menu表中: 存储的是前端页面的菜单配置,注意成员权 ...

最新文章

  1. python标准输入输出用来干什么_python 以标准输出(sys.stdout)为例,看python的标准输入、标准错误输出...
  2. 草稿 9206需抄写 1129
  3. Pandas 文本数据方法 replace( )
  4. 8.19 NOIP模拟测试26(B) 嚎叫响彻在贪婪的厂房+主仆见证了 Hobo 的离别+征途堆积出友情的永恒...
  5. 【实践】腾讯PCG数据中台DEVOPS和AIOPS实践.pdf(附下载链接)
  6. 13、XSI,信号量简介
  7. sci的figure怎么做_一文看懂SCI论文中都有哪几种Figure
  8. SIPP对接fs压力测试
  9. mysql查询条件忽略大小写_mysql 查询条件不区分大小写问题
  10. 整车控制器(VCU)策略及开发流程
  11. codeforces 1328 B. K-th Beautiful String
  12. 【Python人工智能】Python全栈体系(二十)
  13. KVM 多电脑切换器(KVM Switch)
  14. 关于ORACLE (AMERICAN_AMERICA.US7ASCII)字符集
  15. 处理各种压力(情绪、家庭)时,需要注意什么!
  16. 计算机设备选型的基本原则,设备选型的概念和选型依据
  17. 机器学习岗位的面试准备——总结1
  18. 天龙八部TLBB系列 - 网单服务端Public/Data目录文件说明
  19. 三十六、黄眉童儿的真实身份
  20. 关于sql server导出csv格式文件的身份证号乱码问题处理办法

热门文章

  1. 业界分享 | 美团搜索排序实践
  2. 跨境电商ERP系统怎么使用?
  3. 吴恩达深度学习之一《神经网络和深度学习》学习笔记
  4. 吴恩达《机器学习》第六章:逻辑回归
  5. Algorithm:贪心策略之区间覆盖问题
  6. ROS入门-11.客户端Client的编程实现
  7. 深度学习笔记——循环神经网络RNN/LSTM
  8. Anaconda安装过程中出现InvalidArchiveError
  9. vue 加载太慢_如何提高Vue项目首页的加载速度
  10. long 雪花算法_一次复杂的雪花算法使用总结