php 五舍六入,Golang浮点型的默认舍入规则——四舍六入五成双
四舍六入五成双是一种比较精确比较科学的计数保留法,是一种数字修约规则,又名银行家舍入法。它比通常用的四舍五入法更加精确。
具体规则:
被修约的数字小于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浮点型的默认舍入规则——四舍六入五成双相关推荐
- Math.Round是四舍五入还是五舍六入
在开发中发现一个以前未注意到的问题, 以前一直以为Math.Round是按四舍五入的原则处理的(从小到大中国的教育课程就是这样,至少我是这样看到的), 没想到时代在变化,国际形式日新月异(老外实在是有 ...
- python: 内建函式round() 是四舍五入还是五舍六入?
今天在读" Python 入门-迈向高手之路 (深智, 2018)" 时看到round() 函式的范例, 作者将此函式的功能称为五舍六入, 我一直认为round() 是四舍五入, ...
- 四舍五入算法、五舍六入、六舍七入、七舍八入。。。。。。。
四舍五入:int=(int)(double +0.5); 五舍六入:int=(int)(double +0.4); 六舍七入:int=(int)(double +0.3); 七舍八入:int=(int ...
- Java--关于ROUND_HALF_DOEN五舍六入
在学习BigDecimal(精准计算浮点数)的时候,敲过这样一串代码: BigDecimal c = new BigDecimal("18.8452").setScale(2, B ...
- BigDecimal.ROUND_HALF_DOWN(五舍六入)
@Testpublic void TestBigDecimalRound() {// 1.BigDecimal.ROUND_HALF_UP表示四舍五入BigDecimal roundHalfUp = ...
- mysql 五舍六入_四舍六入五成双(适用于MYSQL)(最大支持小数点第9位)
ZRound CREATE FUNCTION ZRound(num DECIMAL(38,14) ,i INT) RETURNS varchar(20) BEGIN /*原数据转换成字符类型*/ DE ...
- php 五舍六入,四舍五入计算器 四舍五入、四舍六入五取偶(双)算法 - 数学公式 - 房贷计算器...
四舍五入计算器 在线四舍五入计算器,应用了对数字进行传统常用的四舍五入法,以及更加精准的四舍六入五取偶(银行家算法). 数字 保留 0 1 2 3 4 5 6 7 8 9 10 位小数 计 算 重 置 ...
- c语言整形除法是五舍六入吗,四舍六入五成双 - C/C++论坛 - 51CTO技术论坛_中国领先的IT技术社区...
复制内容到剪贴板 代码:#include using namespace std; #define FLENGTH 1000; //宏定义保留3位小数 double fun(double ...
- mysql 五舍六入_sql的四舍六入五成双的函数 (1)
--drop function MyRound create function MyRound(@num numeric(20,10),@i int) --@i保留的小数位 --@nu ...
最新文章
- SpringCloud Config简介
- Errors are values
- java indexof int_Java Stack indexOf(Object, int)用法及代码示例
- [Java核心技术(卷I)] - 简易的日历
- 【CRMEB知识付费系统v1.4.4】
- HDOJ 4005-The war解题报告
- (学习)linux驱动学习知识积累(一)
- OpenGL和D3D11中的深度模版测试
- 知也atitit.解决struts2 SpringObjectFactory.getClassInstance NullPointerException v2 q31无涯 - I...
- jq跨域代理_JQuery前端跨域问题的七种解决方案
- sqlserver备份还原丢失dbo_sqlserver数据库的备份与恢复sql实现
- 这才是程序员该有的桌面壁纸!
- lpddr3 阻抗_LPDDRx的总结
- Word:删不掉的空白页?
- 如何更换和删除微软雅黑字体
- windows7 优化:readyboost总结
- SOM网络(Kohonen自组织网络)学习第二篇
- 阿里云CDN产品介绍
- 科沃斯机器人招股_603486_科沃斯招股说明书.pdf
- CAN通信----电路图
热门文章
- win7查找计算机图片,如何在 win7电脑上查看 HEIC 照片的内容?
- dockerexec 的使用-it操作
- 计算机图像处理知识点复习
- 基于Java毕业设计弹幕视频网站源码+系统+mysql+lw文档+部署软件
- android 触摸事件 取消,如何禁用/重新启用Android中的触摸事件?
- Unity下计步器Pedometer算法的实现
- PoseCNN: A Convolutional Neural Network for 6D Object Pose Estimation in Cluttered Scenes—2017(笔记)
- 机器学习中误差的定义,以及过拟合现象的介绍
- GNSS入门1-误差
- 西门子S7系列PLC以太网通讯处理器MPI-131