要求较小的精度

round()内置方法

这个是使用最多的,刚看了round()的使用解释,也不是很容易懂。round()不是简单的四舍五入的处理方式。

For the built-in types supporting round(), values are rounded to the closest multiple of 10 to the power minus ndigits; if two

multiples are equally close, rounding is done toward the even choice (so, for example, both round(0.5) and round(-0.5) are 0, and

round(1.5) is 2).

>>> round(2.5)

3.0

>>> round(-2.5)

-3.0

>>> round(2.675)

3.0

>>> round(2.675,2)

2.67

round()如果只有一个数作为参数,不指定位数的时候,返回的是一个整数,而且是最靠近的整数。一般情况是使用四舍五入的规则,但是碰到舍入的后一位为5的情况,如果要取舍的位数前的数是偶数,则直接舍弃,如果奇数这向上取舍。看下面的示例:

>>> round(2.555,2)

2.56

>>> round(2.565,2)

2.56

>>> round(2.575,2)

2.58

>>> round(2.585,2)

2.58

使用格式化

效果和round()是一样的。

>>> a = ("%.2f" % 2.555)

>>> a

'2.56'

>>> a = ("%.2f" % 2.565)

>>> a

'2.56'

>>> a = ("%.2f" % 2.575)

>>> a

'2.58'

>>> a = ("%.2f" % 2.585)

>>> a

'2.58'

>>> a = int(2.5)

>>> a

2

要求超过17位的精度分析

python默认的是17位精度,也就是小数点后16位,但是这里有一个问题,就是当我们的计算需要使用更高的精度(超过16位小数)的

时候该怎么做呢?

高精度使用decimal模块,配合getcontext

>>> from decimal import *

>>> print(getcontext())

Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[InvalidOperation, DivisionByZero, Overflow])

>>> getcontext().prec = 50

>>> b = Decimal(1)/Decimal(3)

>>> b

Decimal('0.33333333333333333333333333333333333333333333333333')

>>> c = Decimal(1)/Decimal(7)

>>> c

Decimal('0.14285714285714285714285714285714285714285714285714')

>>> float(c)

0.14285714285714285

默认的context的精度是28位,可以设置为50位甚至更高,都可以。这样在分析复杂的浮点数的时候,可以有更高的自己可以控制的精度。其实可以留意下context里面的这rounding=ROUND_HALF_EVEN 参数。ROUND_HALF_EVEN, 当half的时候,靠近

even.

使用格式化(不推荐)

>>> a = ("%.30f" % (1.0/3))

>>> a

'0.333333333333333314829616256247'

可以显示,但是不准确,后面的数字基本没有意义。

关于小数和取整

既然说到小数,就必然要说到整数。一般取整会用到这些函数:

round()

这个不说了,前面已经讲过了。一定要注意它不是简单的四舍五入,而是ROUND_HALF_EVEN的策略。

math模块的ceil(x)

取大于或者等于x的最小整数。

math模块的floor(x)

去小于或者等于x的最大整数。

>>> from math import ceil, floor

>>> round(2.5)

2

>>> ceil(2.5)

3

>>> floor(2.5)

2

>>> round(2.3)

2

>>> ceil(2.3)

3

>>> floor(2.3)

2

以上这篇浅谈Python里面小数点精度的控制就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

python float 精度_浅谈Python里面小数点精度的控制相关推荐

  1. python编写函数_浅谈Python 函数式编程

    匿名函数lambda表达式 什么是匿名函数? 匿名函数,顾名思义就是没有名字的函数,在程序中不用使用 def 进行定义,可以直接使用 lambda 关键字编写简单的代码逻辑.lambda 本质上是一个 ...

  2. python 迭代器协议_浅谈Python中的生成器和迭代器

    迭代器 迭代器协议 对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么返回一个异常来终止本次迭代.(只能往前走,不能往后退!) 迭代器对象 遵循了(实现了)迭代器协议的对象.(对象内 ...

  3. python static方法_浅谈python 类方法/静态方法

    1.类方法 类方法是从属于"类对象"的方法.类对象可以通过装饰器@classmethod来定义,具体格式如下: @classmethod def 类方法名(cls [, 形参列表] ...

  4. python表格对齐_浅谈python str.format与制表符\t关于中文对齐的细节问题

    写了一个练手的爬虫...在输出的时候出现了让人很不愉♂悦的问题 像这样: 令人十分难受啊! #------------------------------------------ 在此之前先说一下py ...

  5. python未定义_浅谈Python程序的错误:变量未定义

    Python程序的错误种类 Python程序的错误分两种.一种是语法错误(syntax error).这种错误是语句的书写不符合Python语言的语法规定.第二种是逻辑错误(logic error). ...

  6. python hasattr函数_浅谈python中的getattr函数 hasattr函数

    hasattr(object, name) 作用:判断对象object是否包含名为name的特性(hasattr是通过调用getattr(ojbect, name)是否抛出异常来实现的). 示例: & ...

  7. python制表符对齐_浅谈python str.format与制表符\t关于中文对齐的细节问题

    写了一个练手的爬虫...在输出的时候出现了让人很不愉♂悦的问题 像这样: 令人十分难受啊! #------------------------------------------ 在此之前先说一下py ...

  8. python字符串操作_浅谈Python 字符串特有的操作方法

    来源:(微信号:python_cat)" 正如<你真的知道Python的字符串是什么吗?>所写,Python中字符串是由Uniocde编码的字符组成的不可变序列,它具备与其它序列 ...

  9. python做小波分析_浅谈Python小波分析库Pywavelets的一点使用心得

    本文介绍了Python小波分析库Pywavelets,分享给大家,具体如下: # -*- coding: utf-8 -*- import numpy as np import math import ...

最新文章

  1. 计算机5G英语文献,无线通信英文参考文献精选
  2. 以太坊钱包_最大的以太坊钱包币数量还在增加
  3. 【数据分析】干货!一文教会你 Scrapy 爬虫框架的基本使用
  4. oracle查看字典结构体,Oracle-17-数据字典查看约束信息
  5. 深度学习中多层全连接网络的梯度下降法及其变式
  6. python模块--BeautifulSoup4 和 lxml
  7. 批处理如何清除文本文档里面的重复行
  8. 多云战略:企业如何精益求精?
  9. 枚举的定义与使用 1127 c#
  10. netty大白话--字符串的收发(三)
  11. asp.net安全身份验证
  12. atitit.提升软件开发的生产力关健点-------大型开发工具最关健
  13. 115-RTKLIB及GAMP中PPP的随机模型
  14. input限制输入经纬度和java后台验证经纬度
  15. XCode11中The app delegate must implement the window property if it wants to use 如何解决
  16. windows关闭445、3389端口
  17. 剑网三怎么查看服务器角色信息,剑网3如何获取角色?以下这些获取方式请全部掌握!...
  18. 字、字节、位、字长的区别与关系
  19. python123 凯撒密码,Python:Caesar代码,python,凯撒,密码
  20. 微信小程序学习记录(一)小实战——加法计算器

热门文章

  1. javaone_替代JavaOne 2013
  2. 混合云的承诺,收益和产品
  3. Vertx编程风格:您的反应式Web Companion REST API解释了
  4. Java开发人员应该知道的前20个库和API
  5. JavaOne 2016 Essentials:7个您不容错过的事件和会话
  6. smartgwt_SmartGWT入门,提供出色的GWT界面
  7. 不删除侦听器–使用ListenerHandles
  8. 实用程序类的OOP替代
  9. Spring Data MongoDB级联保存在DBRef对象上
  10. Java异常处理教程(包含示例和最佳实践)