python怎么实现正确的浮点数四舍五入
round
以下示例展示对于结构相同的两组数据(1.03575000和1.03425000)保留小数后4位,使用内置函数round方法的输出结果,并不是需要的结果
print(round(1.03575000, 4))
print(round(1.03425000, 4))
"""
1.0357
1.0342
"""
Decimal
先看看不指定rounding参数的样子,结果就是四舍六入五成双的进位方式,即去掉最后几位无用的0后,如果进位数为5,则看前一位是否为偶数(偶数不进位,奇数进一位),如果进位数后还有非0的数字,不管进位数前一位是否为奇偶,都需要进一位
from decimal import Decimal
# Decimal(n) 中的n必须是字符串类型,这样存储精度较float更高。而参数Decimal(m)中的m则是需要保留的位数
print(Decimal("1.03575000").quantize(Decimal("0.0000"))) # 进位数前一位为奇数,进一位
print(Decimal("1.03425000").quantize(Decimal("0.0000"))) # 进位数前一位为偶数,不进位
print(Decimal("1.03425100").quantize(Decimal("0.0000"))) # 进位数后有非0的数字,进一位
"""
1.0358
1.0342
1.0343
"""
指定rounding参数的样子,即rounding=ROUND_HALF_UP,它的进位规则为四舍五入而非四舍六入五成双。
from decimal import Decimal, ROUND_HALF_UP
# Decimal(n) 中的n必须是字符串类型,这样存储精度较float更高。而参数Decimal(m)中的m则是需要保留的位数
print(Decimal("1.03575000").quantize(Decimal("0.0000"), rounding=ROUND_HALF_UP))
print(Decimal("1.03425000").quantize(Decimal("0.0000"), rounding=ROUND_HALF_UP))
print(Decimal("1.03425100").quantize(Decimal("0.0000"), rounding=ROUND_HALF_UP))
"""
1.0358
1.0343
1.0343
"""
# 需要注意的是,Decimal的返回值并不是str类型,使用时要转为str
python怎么实现正确的浮点数四舍五入的更多相关文章
- wikioi 2235 机票打折 【考查浮点数四舍五入的技巧】
/*======================================================================== 2235 机票打折 题目描述 Descriptio ...
- python中精确输出JSON浮点数的方法
有时需要在JSON中使用浮点数,比如价格.坐标等信息.但python中的浮点数相当不准确, 例如下面的代码: 复制代码代码如下: #!/usr/bin/env python import json a ...
- python中的整数、浮点数和布尔值
整数和浮点数有那个四则运算: 两种类型的数可以直接进行加减,当整数和浮点数进行加减的时候,结果会自动的变为浮点数,其中除法运算是“/”来表示的, 而余数的算术符号是“%”来表示的. 在布尔值的判断中我 ...
- Python之执行精确的浮点数运算
有时候:代码上数字计算可能会有如同下面的误差 原因: 这些错误是由底层CPU和IEEE 754标准通过自己的浮点单位去执行算术时的特征. 由于Python的浮点数据类型使用底层表示存储数据,因此你没办 ...
- python 升级后正确安装 pip
由于服务器的python 版本是2.6.6 , 为了使用 twisted 升级至 2.7.13 , 如果此时直接用 yum install python-pip 安装 pip, 则实际pip 会安装在 ...
- 使用 Python 控制自己的电脑和键盘是一种什么样的体验?python学习的正确姿势
可能有时候你需要在电脑做一些重复的点击或者提交表单等操作,如果能通过 Python 预先写好相关的操作指令,让它帮你操作,然后你自己爱干嘛干嘛去,有点 “按键精灵” 的意思,是不是感觉有点爽呢? 那么 ...
- Java如何正确比较浮点数
看下面这段代码,将 d1 和 d2 两个浮点数进行比较,输出的结果会是什么? double d1 = .1 * 3; double d2 = .3; System.out.println(d1 == ...
- Python 发射导弹的正确方式
——此文以纪念南京大屠杀79周年 今天Toby教你如何用python的basemap包绘制轰炸东京的地图. 在数据可视化过程中,我们常常需要将数据根据其采集的地理位置在地图上显示出来.比如说我们会想要 ...
- Python的循环正确的操作使用方法详解
要计算1+2+3,我们可以直接写表达式: >>> 1 + 2 + 3 6 要计算1+2+3+...+10,勉强也能写出来. 但是,要计算1+2+3+...+10000,直接写表达式就 ...
- Python 进阶——如何正确使用 yield?
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 在 Python 开发中, yield 关键字的使用其实较为频繁,例如大集合的生成,简化代码结构.协 ...
随机推荐
- [深度探索C++对象模型]关于成员初始化列表(member initiallization list)
四种特殊情况: 1.当初始化一个reference member时. 2.当初始化一个const member时. 3.当初始化一个base class的constructor,而它拥有一组参数时. ...
- github下载后的文件,winrar打开中文是乱码
是因为编码问题,通过7Z解压后正常
- Three.js 进阶之旅:新春特典-Rabbit craft go 🐇
声明:本文涉及图文和模型素材仅用于个人学习.研究和欣赏,请勿二次修改.非法传播.转载.出版.商用.及进行其他获利行为. 摘要 兔年到了,祝大家身体健,康万事顺利.本文内容作为兔年新春纪念页面,将使用 ...
- 半个前端新手入门Electron的过程
前言 先说几句废话,本人是一名 web 后端开发,主语言是 java,在学 Electron 之前,只会一点点 HTML和 JavaScript.本文讲的也是我学习 Electron 的过程,而非教程 ...
- 一文讲尽Thread类的源码精髓
摘要:今天,我们就一起来简单看看Thread类的源码. 本文分享自华为云社区<[高并发]Thread类的源码精髓>,作者:冰 河. 前言 最近和一个朋友聊天,他跟我说起了他去XXX公司面试 ...
- 将Grafana嵌入自己的应用
什么是Grafana Grafana是一款强大的可视化工具,无论数据存储在哪里,都可以查询.可视化.警报和理解您的数据.使用Grafana,您可以通过美丽.灵活的仪表板创建.探索和共享所有数据. 场景 ...
- 文盘Rust -- 给程序加个日志
作者:贾世闻 日志是应用程序的重要组成部分.无论是服务端程序还是客户端程序都需要日志做为错误输出或者业务记录.在这篇文章中,我们结合[log4rs](https://github.com/estk/l ...
- python实现通用json导入到mysql
import json from Db import Db db = Db() ''' 参考配置文件 { "file": "test.json", " ...
- Spring配置类理解(Lite模式和Full模式)
Spring中的注解大家在开发中都常常用到,但是如果我说我们常常用的注解修饰了一个类,表示这个类就是一个配置类很多开发者都会有点迷糊了.具体配置类在开发中有什么样的用途我就不多说了,相信很多人都知道, ...
- react无效渲染优化--工具篇
壹 ❀ 引 本文属于我在公司的一篇技术分享文章,它在我之前 React性能优化,六个小技巧教你减少组件无效渲染一文的基础上进行了拓展,增加了工具篇以及部分更详细的解释,所以内容上会存在部分重复,以下是 ...