Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Golang浮点型的默认舍入规则——四舍六入五成双

Golang浮点型的默认舍入规则——四舍六入五成双

作者头像
henrylee2cn
发布于 2019-04-04 07:19:22
发布于 2019-04-04 07:19:22
4.2K00
代码可运行
举报
文章被收录于专栏:Go实战Go实战
运行总次数:0
代码可运行

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

具体规则:

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

助记口诀:

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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)
}

输出结果 

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  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的方法对浮点型进行银行家取舍,取得其近似数。例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import (
	"fmt"
	"strconv"
)

func main() {
	s := fmt.Sprintf("%0.6f", 17.82671567890123456789987654324567898765432)
	f, _ := strconv.ParseFloat(s, 64)
	fmt.Println(s, f)
}

输出结果

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  17.826716 17.826716

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

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016/09/03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Redis笔记
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的API。是NoSQL技术之一,也被称为结构化数据库!
技术交流
2022/11/18
3980
Redis笔记
Redis
为了方便和后面不修改原生的配置文件,我们会复制一个配置文件到 /user/local/bin 下,
化羽羽
2022/10/28
6650
Redis 【常识与进阶】
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
IT茂茂
2020/04/02
5420
Redis 【常识与进阶】
redis【redis入门到精通】
Redisredis 是完全开源免费的,是一个高性能的key-value数据库,目前市面上主流的数据库 Redis、Memcache、Tair(淘宝自研发)
高大北
2022/06/27
6070
redis【redis入门到精通】
redis面试必会6题经典_redis 面试
最近囧辉发现自己的 Java 学习交流群 里有不少同学已经“悄悄”的入职了携程、美团、阿里菜鸟等大厂。
全栈程序员站长
2022/11/17
1.8K0
redis面试必会6题经典_redis 面试
Redis升级
定期删除:默认是每隔 100ms 就轮询各个库随机抽取一些设置了过期时间的key,检查其是否过期,如果过期就删除。每隔100ms就遍历所有的设置过期时间的 key 的话,是个损耗。
晚上没宵夜
2020/04/13
1.1K0
2W字!详解20道Redis经典面试题!(珍藏版)
大家好,我是捡田螺的小男孩。金九银十即将到来,整理了20道经典Redis面试题,希望对大家有帮助。
捡田螺的小男孩
2021/09/08
8850
Redis详解
redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了 master-slave(主从)同步。 免费和开源!是当下最热门的 NoSQL 技术之一!也被人们称之为结构化数据库!
JokerDJ
2023/11/27
4350
Redis详解
【9k字+】第二篇:进阶:掌握 Redis 的一些进阶操作(Linux环境)
能够合理的查看,以及理解修改配置文件,能帮助我们更好的使用 Redis,下面按照 Redis 配置文件的顺序依次往下讲
BWH_Steven
2021/02/24
3490
【9k字+】第二篇:进阶:掌握 Redis 的一些进阶操作(Linux环境)
Redis相关底层面试题
Redis是一个开源的高性能键值对存储系统,具有快速、灵活和可扩展的特性。它是一个基于内存的数据结构存储系统,可以用作数据库、缓存和消息代理。Redis支持多种类型的数据结构,如字符串(strings),散列(hashes),列表(lists),集合(sets)等。
半月无霜
2023/10/18
2520
Redis相关底层面试题
「查缺补漏」巩固你的Redis知识体系
链接: https://pan.baidu.com/s/1MJnzX_qRuNXJI09euzkPGA 提取码: 2c6w 复制这段内容后打开百度网盘手机App,操作更方便哦
Kerwin
2020/08/10
7650
「查缺补漏」巩固你的Redis知识体系
Redis面试题总结(超详细)
针对以上的问题,Redis集群提供了较为完善的方案,解决了存储能力受到单机限制,写操作无法负载均衡的问题。
是阿超
2021/11/10
4.2K0
Redis数据结构存储系统:第一章:安装配置
NoSQL是Not only SQL的缩写,大意为“不只是SQL”,说明这项技术是传统关系型数据库的补充而非替代。在整个NoSQL技术栈中MemCache、Redis、MongoDB被称为NoSQL三剑客。那么时代为什么需要NoSQL数据库呢?我们来做个对比:
Java廖志伟
2022/09/28
3330
Redis数据结构存储系统:第一章:安装配置
44连问,接近2w字Redis面试题总结
PS:Redis的内存淘汰策略的选取并不会影响过期的key的处理。内存淘汰策略用于处理内存不足时的需要申请额外空间的数据;过期策略用于处理过期的缓存数据
小熊学Java
2022/09/06
7830
《Java面试题集中营》- Redis
单线程能够避免线程切换和竞态产生的消耗,而且单线程可以简化数据结构和算法的实现 至于单线程还快,是因为Redis是基于内存的数据库,内存响应速度是很快的,并且采用epoll作为I/O多路复用技术,再加上Redis自身的事件处理模型将epoll中的连接、读写、关闭都转换为事件,不在网络I/O上浪费过多时间
阿提说说
2024/09/06
1240
《Java面试题集中营》- Redis
看了这篇Redis,开发面试不再怕
「原理:」 fork和cow。fork 是指 redis间隔一段时间会 「fork」 一个子进程,子线程将数据写到磁盘上一个临时RDB文件中,当子进程写完临时文件后,将原来的RDB替换掉,这样的好处是可以 「cow(copy-on-wirte)」「优点:」
蔡不菜丶
2020/11/11
3900
看了这篇Redis,开发面试不再怕
0. Redis 基础
如果对 Redis 还不了解的同学可以先看一下这篇 Redis 基础文章 ,这里面介绍了 Redis 是什么,以及怎么用
说故事的五公子
2022/11/07
6510
0. Redis 基础
【硬核万字总结】看完这20道Redis面试题,女朋友都面上阿里了
Redis全称为:Remote Dictionary Server(远程数据服务),Redis是一种支持key-value等多种数据结构的存储系统。可用于缓存,事件发布或订阅,高速队列等场景。支持网络,提供字符串,哈希,列表,队列,集合结构直接存取,基于内存,可持久化。
浅羽技术
2020/12/07
6690
【硬核万字总结】看完这20道Redis面试题,女朋友都面上阿里了
面试官最爱问的 11道 Redis 面试题,我替你整理好了
基于这些基础的数据结构,redis封装了自己的对象系统,包含字符串对象string、列表对象list、哈希对象hash、集合对象set、有序集合对象zset,每种对象都用到了至少一种基础的数据结构。
程序员小富
2020/10/10
7480
面试官最爱问的 11道 Redis 面试题,我替你整理好了
面试八股文——Redis篇
今天给大家分享一下 Redis 面试常考的题目,答案也整理好了,非常贴心有木有,快来看看你能答对几个。
程序员大彬
2021/10/08
1.7K0
面试八股文——Redis篇
相关推荐
Redis笔记
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档