IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 【Python 基础教程】彻底解决python round函数的四舍五入不精确的问题 -> 正文阅读

[Python知识库]【Python 基础教程】彻底解决python round函数的四舍五入不精确的问题


前言🥦

在Python官方有这样一句话:The behavior of round() for floats can be surprising: for example, round(2.675, 2) gives 2.67 instead of the expected 2.68. This is not a bug: it’s a result of the fact that most decimal fractions can’t be represented exactly as a float. See Floating Point Arithmetic: Issues and Limitations for more information也就是说,在Python语言中小数的存储往往是近似值,并不像整数那样精确。我们呢有时候需求就是对小数的指定位数进行四舍五入,今天博主在这里分享一下在Python中进行小数四舍五入的几种方法。如果你也有什么好的方法欢迎评论区留言哦。


一、小数不精确的常见问题🥦

Python中的小数存储往往是不精确的,相加的时候可能会导致精度丢失,或者结果出乎意料。

1.相加🌴

print(1.01+1.02)
在这里插入图片描述

2.四舍五入🌴

以下代码的打印结果
print(round(1.135,2))
print(round(1.235,2))
print(round(1.335,2))
print(round(1.435,2))
print(round(1.535,2))
print(round(1.635,2))
最后的一位数应该都为4,但是由于精度丢失,导致有些数四舍五入失败。
在这里插入图片描述

二、round函数🥦

1.简介🌴

官方给出的接口如下:

def round(number: SupportsRound[_T], ndigits: SupportsIndex)

第一个参数指的是需要进行四舍五入的小数,第二个参数是保留的小数位
默认是保留0位小数,也就是保留到整数。

2.使用方法🌴

① 代码🌵:

print(round(1.135,2))
print(round(1.235,2))
print(round(1.335,2))
print(round(1.435,2))
print(round(1.535,2))
print(round(1.635,2))

② 运行结果🌵:

在这里插入图片描述

③ 暴露问题🌵:

可以看出来运行结果不是很理想,因为有些数值四舍五入进位失败,我们可以处理一下,然后就可以得到准确的结果了。经过分析当只有一位小数的时候保留到整数,进位比较准确。
代码:
在这里插入图片描述
结果:
在这里插入图片描述

④ 解决方法🌵:

我们可以对代码做出这样的改动,也就是利用四舍五入一位小数可以获得精确值的性质
可以先将数值扩大n倍,直到将保留小数位的下一位小数提到小数部分第一位,也就是说保留两位小数就将第三位小数提到第一位,做的操作就是乘以100。依次类推

print(round(1.235,2))
print(round(1.3355*100)/100)
print(round(1.435,2))
print(round(1.5355*100)/100)
print(round(1.635,2))

在这里插入图片描述

三、Decimal模块🥦

这是一个精确小数计算的模块,咱们只在这里说一下他的简单使用方法。


1.创建Decimal小数🌴

① 字符串型🌵

代码:

print("Decimal精确的1.35:",Decimal("1.35"))

运行结果:
在这里插入图片描述

② 数值型🌵

代码:

print("float型的1.35",Decimal(1.35))

运行结果:
在这里插入图片描述

2.结合round函数精确四舍五入🌴

代码:

from decimal import Decimal
print(round(Decimal("1.535"),2))
print(round(Decimal("1.335"),2))

运行结果:
在这里插入图片描述

3.使用自身方法精确四舍五入🌴

代码:

print(Decimal("1.3355").quantize(Decimal("0.000")))
print(Decimal("1.2955").quantize(Decimal("0.00")))
print(Decimal("1.3355").quantize(Decimal("0.00")))

运行结果:
在这里插入图片描述

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章           查看所有文章
加:2022-03-12 17:27:53  更:2022-03-12 17:30:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 21:25:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码