round

以下示例展示对于结构相同的两组数据(1.035750001.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怎么实现正确的浮点数四舍五入的更多相关文章

  1. wikioi 2235 机票打折 【考查浮点数四舍五入的技巧】

    /*======================================================================== 2235 机票打折 题目描述 Descriptio ...

  2. python中精确输出JSON浮点数的方法

    有时需要在JSON中使用浮点数,比如价格.坐标等信息.但python中的浮点数相当不准确, 例如下面的代码: 复制代码代码如下: #!/usr/bin/env python import json a ...

  3. python中的整数、浮点数和布尔值

    整数和浮点数有那个四则运算: 两种类型的数可以直接进行加减,当整数和浮点数进行加减的时候,结果会自动的变为浮点数,其中除法运算是“/”来表示的, 而余数的算术符号是“%”来表示的. 在布尔值的判断中我 ...

  4. Python之执行精确的浮点数运算

    有时候:代码上数字计算可能会有如同下面的误差 原因: 这些错误是由底层CPU和IEEE 754标准通过自己的浮点单位去执行算术时的特征. 由于Python的浮点数据类型使用底层表示存储数据,因此你没办 ...

  5. python 升级后正确安装 pip

    由于服务器的python 版本是2.6.6 , 为了使用 twisted 升级至 2.7.13 , 如果此时直接用 yum install python-pip 安装 pip, 则实际pip 会安装在 ...

  6. 使用 Python 控制自己的电脑和键盘是一种什么样的体验?python学习的正确姿势

    可能有时候你需要在电脑做一些重复的点击或者提交表单等操作,如果能通过 Python 预先写好相关的操作指令,让它帮你操作,然后你自己爱干嘛干嘛去,有点 “按键精灵” 的意思,是不是感觉有点爽呢? 那么 ...

  7. Java如何正确比较浮点数

    看下面这段代码,将 d1 和 d2 两个浮点数进行比较,输出的结果会是什么? double d1 = .1 * 3; double d2 = .3; System.out.println(d1 == ...

  8. Python 发射导弹的正确方式

    ——此文以纪念南京大屠杀79周年 今天Toby教你如何用python的basemap包绘制轰炸东京的地图. 在数据可视化过程中,我们常常需要将数据根据其采集的地理位置在地图上显示出来.比如说我们会想要 ...

  9. Python的循环正确的操作使用方法详解

    要计算1+2+3,我们可以直接写表达式: >>> 1 + 2 + 3 6 要计算1+2+3+...+10,勉强也能写出来. 但是,要计算1+2+3+...+10000,直接写表达式就 ...

  10. Python 进阶——如何正确使用 yield?

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 在 Python 开发中, yield 关键字的使用其实较为频繁,例如大集合的生成,简化代码结构.协 ...

随机推荐

  1. [Leetcode]完全平方数

    题目 代码 class Solution { public: int numSquares(int n) { vector<int> dp(n + 1, INT_MAX); dp[0] = ...

  2. 深入理解C++虚函数底层机制和RTTI运行时类型识别

    当调用一个虚函数时,被执行的代码必须与调用函数对象的动态类型相一致:指向对象的指针或引用的类型是不重要的,编译器是如何高效地提供这种行为呢?大多数编译器是使用virtual table和virtual ...

  3. JavaBean为何物?

    JavaBean为何物?   摘要:初学SSM框架之后,我对JavaBean这个东西开始有了简单的接触,在很久以前听见JavaBean这个词一直以为是一个非常高大上的东西,但是在仔细研究之后发现其本质 ...

  4. Wireshark嗅探软件

    # Wireshark的基本使用方法 1.1 打开wireshark 1.2 查看eth0 1.3 混杂模式 混杂模式 :任何经过这台主机的数据报都会被捕获. 停止捕获 -> 捕获 -> ...

  5. 面试必问:说一下 Java 虚拟机的内存布局?

    我们通常所说的 Java 虚拟机(JVM)的内存布局,一般是指 Java 虚拟机的运行时数据区(Runtime Data Area),也就是当字节码被类加载器加载之后的执行区域划分.当然它通常是 JV ...

  6. DJI Flight Simulator 无人机模拟器 功能介绍与使用说明

    0 前言 无人机是当前非常火热的"相机设备",而大疆又是其中翘楚,功能丰富,可以说是一个将带着云台的智能手机放到了天空中.如果你有自己玩过旋翼无人机航模的话,可能会体会到大疆的另一 ...

  7. python字符串表达式求值

    背景: 在开发的过程中涉及到动态的根据公式计算数值 技术上选择了python a= eval("1+2*(3+1)") print(a)

  8. docker02-centos上安装

    1.前提说明Docker 运行在 CentOS 7 上,要求系统为64位.系统内核版本为 3.10 以上.Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位 ...

  9. 跳板攻击之:lcx 端口转发

    跳板攻击之:lcx 端口转发 郑重声明: 本笔记编写目的只用于安全知识提升,并与更多人共享安全知识,切勿使用笔记中的技术进行违法活动,利用笔记中的技术造成的后果与作者本人无关.倡导维护网络安全人人有责 ...

  10. WHAT IS PPM Encoder ?

    About PPM Encoder The PPM encoder allows to encode up to 8 PWM (pulse width modulated) signals into ...