四舍六入五成双是一种比较精确比较科学的计数保留法,是一种数字修约规则,又名银行家舍入法。它比通常用的四舍五入法更加精确。

具体规则:

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

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

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

助记口诀:

四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一

Golang中浮点型默认使用银行家舍入法,如下使用代码验证示例

import (

"fmt"

)

func main() {

fmt.Printf("9.8249=>%0.2f(四舍)\n", 9.8249)

fmt.Printf("9.82671=>%0.2f(六入)\n", 9.82671)

fmt.Printf("9.8351=>%0.2f(五后非零就进一)\n", 9.8351)

fmt.Printf("9.82501=>%0.2f(五后非零就进一)\n", 9.82501)

fmt.Printf("9.8250=>%0.2f(五后为零看奇偶,五前为偶应舍去)\n", 9.8250)

fmt.Printf("9.8350=>%0.2f(五后为零看奇偶,五前为奇要进一)\n", 9.8350)

}

输出结果

9.8249 => 9.82(四舍)

9.82671 => 9.83(六入)

9.8351 => 9.84(五后非零就进一)

9.82501 => 9.83(五后非零就进一)

9.8250 => 9.82(五后为零看奇偶,五前为偶应舍去)

9.8350 => 9.84(五后为零看奇偶,五前为奇要进一)

因此,我可以方便得使用fmt的方法对浮点型进行银行家取舍,取得其近似数。例如:

import (

"fmt"

"strconv"

)

func main() {

s := fmt.Sprintf("%0.6f", 17.82671567890123456789987654324567898765432)

f, _ := strconv.ParseFloat(s, 64)

fmt.Println(s, f)

}

输出结果

17.826716 17.826716

须知:Golang中浮点数精确到超过14位小数后,该舍入规则将不准确,原因是golang的浮点型最大精确到小数点后15位!

php 五舍六入,Golang浮点型的默认舍入规则——四舍六入五成双相关推荐

  1. Math.Round是四舍五入还是五舍六入

    在开发中发现一个以前未注意到的问题, 以前一直以为Math.Round是按四舍五入的原则处理的(从小到大中国的教育课程就是这样,至少我是这样看到的), 没想到时代在变化,国际形式日新月异(老外实在是有 ...

  2. python: 内建函式round() 是四舍五入还是五舍六入?

    今天在读" Python 入门-迈向高手之路 (深智, 2018)" 时看到round() 函式的范例, 作者将此函式的功能称为五舍六入, 我一直认为round() 是四舍五入, ...

  3. 四舍五入算法、五舍六入、六舍七入、七舍八入。。。。。。。

    四舍五入:int=(int)(double +0.5); 五舍六入:int=(int)(double +0.4); 六舍七入:int=(int)(double +0.3); 七舍八入:int=(int ...

  4. Java--关于ROUND_HALF_DOEN五舍六入

    在学习BigDecimal(精准计算浮点数)的时候,敲过这样一串代码: BigDecimal c = new BigDecimal("18.8452").setScale(2, B ...

  5. BigDecimal.ROUND_HALF_DOWN(五舍六入)

    @Testpublic void TestBigDecimalRound() {// 1.BigDecimal.ROUND_HALF_UP表示四舍五入BigDecimal roundHalfUp = ...

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

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

  7. php 五舍六入,四舍五入计算器 四舍五入、四舍六入五取偶(双)算法 - 数学公式 - 房贷计算器...

    四舍五入计算器 在线四舍五入计算器,应用了对数字进行传统常用的四舍五入法,以及更加精准的四舍六入五取偶(银行家算法). 数字 保留 0 1 2 3 4 5 6 7 8 9 10 位小数 计 算 重 置 ...

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

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

  9. mysql 五舍六入_sql的四舍六入五成双的函数 (1)

    --drop function MyRound create   function   MyRound(@num   numeric(20,10),@i   int) --@i保留的小数位 --@nu ...

最新文章

  1. SpringCloud Config简介
  2. Errors are values
  3. java indexof int_Java Stack indexOf(Object, int)用法及代码示例
  4. [Java核心技术(卷I)] - 简易的日历
  5. 【CRMEB知识付费系统v1.4.4】
  6. HDOJ 4005-The war解题报告
  7. (学习)linux驱动学习知识积累(一)
  8. OpenGL和D3D11中的深度模版测试
  9. 知也atitit.解决struts2 SpringObjectFactory.getClassInstance NullPointerException  v2 q31无涯 - I...
  10. jq跨域代理_JQuery前端跨域问题的七种解决方案
  11. sqlserver备份还原丢失dbo_sqlserver数据库的备份与恢复sql实现
  12. 这才是程序员该有的桌面壁纸!
  13. lpddr3 阻抗_LPDDRx的总结
  14. Word:删不掉的空白页?
  15. 如何更换和删除微软雅黑字体
  16. windows7 优化:readyboost总结
  17. SOM网络(Kohonen自组织网络)学习第二篇
  18. 阿里云CDN产品介绍
  19. 科沃斯机器人招股_603486_科沃斯招股说明书.pdf
  20. CAN通信----电路图

热门文章

  1. win7查找计算机图片,如何在 win7电脑上查看 HEIC 照片的内容?
  2. dockerexec 的使用-it操作
  3. 计算机图像处理知识点复习
  4. 基于Java毕业设计弹幕视频网站源码+系统+mysql+lw文档+部署软件
  5. android 触摸事件 取消,如何禁用/重新启用Android中的触摸事件?
  6. Unity下计步器Pedometer算法的实现
  7. PoseCNN: A Convolutional Neural Network for 6D Object Pose Estimation in Cluttered Scenes—2017(笔记)
  8. 机器学习中误差的定义,以及过拟合现象的介绍
  9. GNSS入门1-误差
  10. 西门子S7系列PLC以太网通讯处理器MPI-131