python默认的是17位小数的精度

1、round()内置方法

π=3.1415926535

new_num=round(π,2)     #四舍五入保留两位小数

print(new_num)              #结果为:3.14

round()如果只有一个数作为参数,不指定位数的时候,返回的是一个整数,而且是最靠近的整数(这点上类似四舍五入)。但是当出现.5的时候,两边的距离都一样,round()取靠近的偶数,这就是为什么

round(2.5) = 2。当指定取舍的小数点位数的时候,一般情况也是使用四舍五入的规则,但是碰到.5的这样情况,如果要取舍的位数前的小数是奇数,则直接舍弃,如果偶数这向上取舍。

2、格式化(效果等同于round())

>>> a=('%.2f'%3.235)
>>> a
'3.23'
>>> a=('%.2f'%3.245)
>>> a
'3.25'
>>> a=int(6.5)
>>> a
6
>>> a=int(6.665)
>>> a
6
超过17位小数的高精度

1、使用格式化(不推荐)

>>> a='%.20f'%(1/3)
>>> a
'0.33333333333333331483'

可以看出结果不准确,后面的数字往往没有意义。

2、使用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=20
>>> b=decimal(1)/decimal(3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'decimal' is not defined
>>> b=Decimal(1)/Decimal(3)
>>> b
Decimal('0.33333333333333333333')
>>> c=Decimal(1)/Decimal(17)
>>> c
Decimal('0.058823529411764705882')
>>> float(c)
0.058823529411764705

取整数

1、round()上面已经讲过了,这里就不再做说明

2、math模块的ceil(x)

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

>>> from math import *
>>> x=6.56
>>> ceil(x)
7
>>> x=6.06
>>> ceil(x)
7

3、math模块的floor(x)

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

>>> from math import *

>>> x=8.00001
>>> floor(x)
8
>>> x=8.9999999999
>>> floor(x)
8

4、math模块的trunc(x)

截断除法,返回x的整数部分

>>> from math import *
>>> a=trunc(5.6789)
>>> a
5
>>> a=trunc(5.1234)
>>> a
5

>>> pi       #数字常量,圆周率
3.141592653589793

>>> a=trunc(pi)
>>> a
3

round()函数当中有许多小坑

>>> a=round(1.675, 2)
>>> a
1.68
>>> a=round(2.675, 2)
>>> a
2.67

这些坑笔者也没搞清楚怎么回事,希望各位大佬指点

参考资料:https://www.cnblogs.com/herbert/p/3402245.html

最新文章

  1. iOS 如何在整个屏幕中都能实现滑动返回的效果
  2. C++ primer的第三章的主要内容
  3. Intellij IDEA新建一个EJB工程(二)
  4. Linux文件查找命令find用法整理(locate/find)
  5. image即时上传
  6. 【Problem】Count and Say
  7. c++ :: 域操作符
  8. VC6.0入门使用
  9. Android 之异步任务(AsyncTask,Handler,Message,looper)
  10. LitePal——Android数据库框架完整使用手册
  11. unity A*寻路 (二)读取NavMesh数据
  12. 《JavaScript高级程序设计》笔记:使用Canvas绘图(15)
  13. C#中的Finalize,Dispose,SuppressFinalize(转载)
  14. ASP.NET Core Swagger 显示接口注释
  15. Spark_RDD之RDD基础
  16. git删除仓库的某个文件
  17. Html写作规范
  18. SCU 4444: Travel(最短路)
  19. UNIX环境编程学习笔记(4)——文件I/O之dup复制文件描述符
  20. Kafka producer介绍

热门文章

  1. Android异常与性能优化相关面试问题-内存管理面试问题详解
  2. BZOJ 1001 平面图转对偶图
  3. Summer training #11
  4. mybatis 注解@Results、@Result、@ResultMap、@One的使用
  5. 在项目中使用Swagger接口说明
  6. PyQt打包可执行文件
  7. 基于node.js的websocket 前后端交互小功能
  8. 灰度图像--图像分割 Sobel算子,Prewitt算子和Scharr算子平滑能力比较
  9. windows驱动开发详解学习笔记
  10. Leetcode题目34.在排序数组中查找元素的第一个和最后一个位置(中等)