Python 四舍五入函数 round
小数位的四舍五入在项目中经常用到。
你可能有注意到 round 函数不能真正做到四舍五入。
round() 函数作用就是,返回浮点数x的四舍五入值。
round( x [, n] )
简单来说就是在浮点运算的时候丢精度。
这个与计算机系统的设计是有关系的,计算机是使用 2 进制进行计算的的,如果我们常用的数学计算或者科学计算,计算机是会丢精度的。
因此我们的解决方案其实非常简单就是使用 Decimal 来进行数学计算。
浮点计算丢精度的问题不仅仅是 Python 会遇到的问题,Java 、 C/C++ 都会遇到这个问题。
可以考察下面的代码:
print(round(2.3, 2))
print(round(2.45, 1))
print(round(2.675, 2))
print(Decimal(1.325))
print(Context(prec=3, rounding=ROUND_HALF_UP).create_decimal('2.675'))
上面程序的输出为:
2.3
2.5
2.67
1.3249999999999999555910790149937383830547332763671875
2.68
因此,在你需要进行浮点计算的时候,不要使用 Float 进行计算,你需要使用 Decimal 进行数学计算。
例如在 Java 中,我们会使用 BigDecimal 进行精确的科学计算。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Java教程分享算法系列之算法概述
好程序员Java培训分享算法系列之算法概述,开篇:算法,一个听起来很厉害的词。也是最近几年特别火的词。很多大学生都想学习算法,因为它是大厂和高薪工作的代名词。但是有关算法系列的书籍或者文章不多,或者说是成系列的、从入门到精通的文章不多,从而导致我们学习起来比较困难。于是,我就计划写一系列适合大学生学习的算法文章,让更多的人能学习算法。本系列的所有算法实现将采用java代码实现,所以需要有一定的java基础。什么是算法?在Collins大词典中有如下解释:An algorithm is a series of mathematical steps, especially in a computer program, which will give you the answer to a particular kind of problem or question.在计算机中,由计算机程序(可以是java、c、Python等),通过一系列的数学步骤,解决一个特定问题的方法就是算法。大白话理解,算法就是在计算机中实现数学逻辑或者数学公式的代码。学习算法需要掌握的知识1、任何一种编程语言,ja...
- 下一篇
【JVM】如何理解强引用、软引用、弱引用、虚引用?
【JVM】如何理解强引用、软引用、弱引用、虚引用?整体架构 强引用强引用是默认支持,当内存不足的时候,JVM开始垃圾回收,对于强引用的对象,就算是出现了OOM也不会回收对象。 强引用是最常见的普通对象引用,只要还有强引用指向对象,对象就存活,垃圾回收器不会处理存活对象。一般把一个对象赋给一个引用变量,这个引用变量就是强引用。当一个对象被强引用变量所引用,它就处于可达状态,是不会被垃圾回收的,即使之后都不会再用到了,也不会回收。因此强引用是造成Java内存泄漏的主要原因之一。 关于Java内存泄漏的详细内容,可以参考这篇博客:https://blog.csdn.net/m0_38110132/article/details/81986334。 对于一个普通对象,如果没有其他引用关系,只要超过了引用的作用域或者显式地将相应的强引用赋值为null,一般认为就是可以被垃圾回收了。(具体的回收时机看垃圾回收策略) 下例中,b就是强引用。 1 public static void main(String[] args) {2 Object a = new Object();3 Object b =...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2全家桶,快速入门学习开发网站教程
- Mario游戏-低调大师作品
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS关闭SELinux安全模块
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2配置默认Tomcat设置,开启更多高级功能