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 关键字的使用其实较为频繁,例如大集合的生成,简化代码结构.协 ...
随机推荐
- Java线程诊断
1.诊断CPU占用过高 [root@master ~]# nohup java -jar JvmProject.jar & // 有问题的java程序 [1] 1627 [root@maste ...
- [WPF]数据绑定Demo
目录 1.View模型代码 2.ViewModel模型代码 3.数据模型 4.样例演示 5.一些知识点 这里简单实现一个listbox绑定的功能,符合MVVM模型. View模型代码(View视图以及 ...
- 【学习笔记】Splay
\(\texttt{0x01}\) 前言 Splay 树(伸展树)是一棵二叉搜索树,由 Daniel Sleator 和 Robert Tarjan 于 1985 年发明.它凭借旋转可以有 $O(\l ...
- odoo中的字段创建后,不可以编辑
- java入门与进阶-P1.1+P1.2
计算机与编程语言 计算机如何解决问题 !-- 首先计算机他是不知道自己需要去做什么的,它需要按照你所说的步骤一步一步进行直到结束 "请给我一杯水" 1.转身走到厨房; 2.找到一个 ...
- QtCharts模块勾画折线和曲线图
QtCharts画线图主要三个部分组成 QLIneSeries或QSplineSeries用于保存联系的坐标位置数据,QChart用于管理图像显示,例如图例,坐标主题等,QChartView则用于显示 ...
- wsl 自动配置代理地址
- 如何查看库函数实现的某些函数(strlen,strcmp,strcpy等)
我们拿strlen()作为举例(编译环境为:VS2022) strlen()引用的头文件为 string.h,如下进行操作 ps:打开strlen.c文件 便可以看到库函数对于strlen()的实现, ...
- JS 计算两个时间戳相差年月日时分秒
// JS 计算两个时间戳相差年月日时分秒 calculateDiffTime(startTime, endTime, type) { var runTime = parseInt(endTime - ...
- Vue框架:6、Vue组件间通信,动态组件,插槽,计算属性,监听属性
目录 前端开发之Vue框架 一.Vue组件间通信 1.组件间通讯父传子 2.组件间通讯子传父 3.ref属性 二.动态组件 1.不使用动态组件 2.使用动态组件 3.keep-alive保持组件不销毁 ...