python 取整_马克的Python学习笔记#数字,日期和时间

b42fa94297b20c7bb2a3991efe13bf78.png

对数值进行调整

在Python中对整数和浮点数进行数字计算是很容易的。但是,如果你需要对分数,数组或者日期和时间进行计算,这就会稍微复杂点。对于简单的取整操作,我们可以使用内建的round(value, ndigits)函数就可,举个例子:

>>> round(1.23, 1)
1.2
>>> round(-1.23, 1)
-1.2
>>> round(1.39, 1)
1.4
>>> round(3.1415926535, 3)
3.142
>>>

当某个值恰好等于两个整数间的一半的时候,取整操作会取到离这个值最近的那个偶数上,并且,传递给round()的参数ndigits可以是负数,在这种情况下会相应的取整邻近位数上,举个例子:

>>> a = 31415926535897932626
>>> round(a, -1)
31415926535897932630
>>> round(a, -1)
31415926535897932630
>>> round(a,-2)
31415926535897932600
>>> round(a, -9)
31415926536000000000
>>>

但是注意,在这种情况下只会输出0.0

>>> a = -3.1415926535897932626
>>> round (a, -1)
-0.0

因为后面那个-1实际上就是取的-3四舍五入就等于0了

注意:在对值进行输出的时候不要把取整和格式化的操作混为一谈。如果将数值以固定的位数输出,一般情况下是用不上round()的,相反,我们只要在格式化时指定所需要的精度就可以了。此外,不要采用对浮点数进行取整的方式来进行修正精度上的问题。对于大部分的涉及浮点数的应用程序来说,一般来讲都没必要,但是如果遇到避免出现误差的行为非常重要,那么就可以考虑使用decimal模块

至于四舍五入的运算在IDE上怎么写,可以参考下这个:

def round_num():print(round(1.23, 1))print(round(1.27, 1))print(round(-1.27, 1))print(round(1.25361,3))# 舍入数为负数a = 1627731print(round(a, -1))print(round(a, -2))print(round(a, -3))# 格式化输出x = 1.23456print(format(x, '0.2f'))print(format(x, '0.3f'))print('value is {:0.3f}'.format(x))# 不要自以为是的用round去修正一些精度问题a = 2.1b = 4.2c = a + bprint(c)c = round(c, 2)  # "Fix" result (???)print(c)if __name__ == '__main__':round_num()

执行精确的小数计算

关于浮点数,有一个所有人都直到的问题就是它们无法精确表达所有的十进制小数位,并且甚至连简单的数学计算也会引入微小的误差。这些误差实际上是由底层CPU的浮点运算单元和IEEE 754浮点算术标准的一种特性,由于Python的浮点类型保存的数据采用的是原始表示形式,因此这种误差是无法避免的,除非你不用float实例。我们目前能做的就是通过decimal模块来加强精度,但这样会牺牲掉一些性能:

>>> from decimal import Decimal
>>> a = Decimal('1.15')
>>> b = Decimal('1.17')
>>> a + b
Decimal('2.32')
>>> print(a + b)
2.32
>>> (a + b) == Decimal('2.32')
True
>>>

Decimal对象能够以任何你所期待的方式来工作,这个模块的主要功能就是允许控制计算过程中的各个方面,这包括数字的位数和四舍五入。

代码示例:

from decimal import Decimal
from decimal import localcontext
import mathdef acc_deciamal():a = 4.2b = 2.1print(a + b)print((a + b) == 6.3)# 使用decimal模块a = Decimal('4.2')b = Decimal('2.1')print(a + b)print((a + b) == Decimal('6.3'))a = Decimal('1.3')b = Decimal('1.7')print(a / b)with localcontext() as ctx:ctx.prec = 3print(a / b)nums = [1.23e+18, 1, -1.23e+18]print(sum(nums))print(math.fsum(nums))if __name__ == '__main__':acc_deciamal()

对数值进行格式化输出

如果我们需要对一个单独的数值做格式化的输出,就像我前几章讲的那样,直接使用内奸函数format()输出就可:

def format_number():x = 1234.56789# Two decimal places of accuracyprint(format(x, '0.2f'))# Right justified in 10 chars, one-digit accuracyprint(format(x, '>10.1f'))# Left justifiedprint(format(x, '<10.1f'))# Centeredprint(format(x, '^10.1f'))# Inclusion of thousands separatorprint(format(x, ','))print(format(x, '0,.1f'))print(format(x, 'e'))print(format(x, '0.2E'))# stringsprint('The value is {:0,.2f}'.format(x))print(format(x, '0.1f'))print(format(-x, '0.1f'))swap_separators = {ord('.'): ',', ord(','): '.'}print(format(x, ',').translate(swap_separators))if __name__ == '__main__':format_number()

对数值做格式化输出通常都是很直接的,上面的例子既可以用于浮点型整数,也可以用于decimal模块中的Decimal对象。当需要限制数值是位数的时候,数值会根据round()函数的规则来进行取整。注意:对数值加上千位分隔符的格式化操作并不是特定于本地的环境的,当然,如果你需要,应该可以用local模块的函数以及用字符串的translate()方法来交换分隔符。

参考书目

《Python CookBook》作者:【美】 David Beazley, Brian K. Jones

Github地址:

yidao620c/python3-cookbook​github.com
838ab09c6a77b5c5d588c651453aed41.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/567271.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 数据类型分为_JAVA中分为基本数据类型及引用数据类型

byte&#xff1a;Java中最小的数据类型&#xff0c;在内存中占8位(bit)&#xff0c;即1个字节&#xff0c;取值范围-128~127&#xff0c;默认值0short&#xff1a;短整型&#xff0c;在内存中占16位&#xff0c;即2个字节&#xff0c;取值范围-32768~32717&#xff0c;默认值0i…

各路由协议的协议号_厂房转让协议

厂房转让协议转让方(甲方)&#xff1a;________________受让方(乙方)&#xff1a;________________甲乙双方本着平等互利的原则&#xff0c;经协商一致就甲方将其权属的工业用地、厂房等转让与乙方及有关事项达成如下协议:一、工业用地及厂房产权基本情况本协议转让的工业用地位…

java容器怎么封装的_docker怎么把容器打包成镜像

1.首先引用 maven docker插件&#xff0c;打开 java应用jar包&#xff0c;点击package按钮&#xff1b;2.新建一个docker文件夹&#xff0c;将导出的jar包放入到此文件夹中&#xff1b;3.新建一个Dockerfile文件&#xff0c;输入以下打包命令FROM frolvlad/alpine-oraclejdk8:s…

python 异常回溯_关于python:在循环中捕获异常回溯,然后在脚本末尾引发错误...

我正在尝试捕获所有异常错误&#xff0c;然后在脚本结尾处使其引发/显示所有回溯...我有一个主脚本&#xff0c;例如调用我的下标&#xff1a;errors open(MISC/ERROR(S).txt, a)try:execfile("SUBSCRIPTS/Test1.py", {})except Exception:## Spread over two calls…

java web开发常见问题_JavaWeb学习笔记(五)--Web开发其他常见问题

一、把web应用打成war包使用JDK自带jar命令&#xff0c;进入到web应用里面&#xff0c;执行命令&#xff1a;jar -cvf 包名.war . # .表示当前目录所有的文件 直接用jar可查看帮助执行完成后生成一个demo.war文件&#xff0c;把这个文件拷贝到Tomcat的webapps下&#xff0c;Tom…

mysql having in_MySQL中无GROUPBY直接HAVING的问题

本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.penglixun.com/tech/database/having_without_groupby_in_mysql.html 今天有同学给我反应&#xff0c;有一张表&#xff0c;id是主键&#xff0c;这样的写法可…

python求线段长度_python微元法计算函数曲线长度的方法

计算曲线长度&#xff0c;根据线积分公式&#xff1a;&#xff0c;令积分函数f(x,y,z) 为1&#xff0c;即计算曲线的长度&#xff0c;将其微元化&#xff1a;其中根据此时便可在python编程实现&#xff0c;给出4个例子&#xff0c;代码中已有详细注释&#xff0c;不再赘述计算曲…

java if 顺序 括号_03-03 java 顺序语句结构,选择结构if语句

/*if语句的格式3&#xff1a;if(比较表达式1) {语句体1;}else if(比较表达式2) {语句体2;}else if(比较表达式3) {语句体3;}...else {语句体n1;}执行流程&#xff1a;首先计算比较表达式1看其返回值是true还是false&#xff0c;如果是true&#xff0c;就执行语句体1&#xff0c…

java 项目部署_java项目部署

本文章只为帮助大家学习项目的发布&#xff0c;为基础篇&#xff0c;在此给大家示范在window环境下的项目部署及运维。以下版本为讲解示例&#xff0c;可自行改至匹配版本。服务器&#xff1a;window service2008 R2 Standard(提前准备好服务器&#xff0c;可以在服务器商家租服…

电气专业学python吗_985大学毕业起薪最高的五个专业,计算机、金融、电气上榜!...

本科毕业生起薪是指本科毕业生第一份工作能够获得的薪资水平&#xff0c;大学毕业生的起薪一般会因为学校、专业、地区的不同而有所差异。一般来说&#xff0c;985大学毕业生的起薪要比普通大学毕业生的起薪高一点&#xff0c;那么&#xff0c;985大学中&#xff0c;哪些专业的…

python核心教程_python核心教程--第四章

第四章讲的是python对象。4.1 python对象所有的python对象都拥有三个特性&#xff1a;身份&#xff0c;类型和值身份&#xff1a;每一个对象都有一个唯一的身份标识自己&#xff0c;任何对象的身份可以使用内建函数id()来得到。这个值可以被认为是该对象的内存地址。类型&#…

uwsgi怎么通过浏览器访问某个脚本_4个Shell小技巧帮你提高机器学习效率:写好脚本,事半功倍...

晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI在机器学习的实践过程中&#xff0c;用好Shell能帮你很多节省时间。最近&#xff0c;有位来自ETHZ的学生分享了一些Shell小技巧。对程序员来说&#xff0c;这些技巧更重要的是让你的思维从琐碎小事中解脱出来&#xff0c;大大提高…

java file 字符串_Java读取一个文本文件拼接成一个字符串(readFileToString)

import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStreamReader;import org.junit.Test;public class Demo {// 使用示例Testpublic void testName1() throws Exception {String filePath …

pythonselenium上传图片视频_如何用selenium、python上传文件(图片)

我添加了一个答案&#xff0c;任何人想使用处理恼人的msofiledialogs。这是对saravanan提出的解决方案的改进&#xff0c;但对Python来说更加充实。我也遇到过类似的问题&#xff0c;我正在为一家公司做脚本。我试图为一家公司的客户上传文件&#xff0c;但由于他们的网站工作方…

java中的.运算符_java中的各种运算符

1、算术运算符&#xff1b;算术运算符也就是我们小学所学过的&#xff1a; - */&#xff1b;还有取模运算符&#xff1a;%&#xff1b;取模运算符也就是求余的运算&#xff1b;运算形式&#xff1a;操作数 操作数&#xff1b;操作数 - 操作数&#xff1b;操作数 *操作数&#…

python curl 获取返回值_python获取系统命令的返回值 | curl in python

项目背景&#xff1a;通过curl 命令 从服务器获取数组&#xff0c;tids&#xff0c;然后导入到Mysql 表中。自己想的方案&#xff1a;shell命令不熟悉&#xff0c;另外python中的数据库等接口都已封装&#xff0c;所以想使用Python来做&#xff0c;利用Python调用shell命令。cu…

java 绑定属性_Java的动态绑定

看这段代码Father father new Son();父类引用指向子类对象&#xff0c;这是java的多态特性&#xff0c;有多态引到动态绑定&#xff0c;如何引入呢&#xff0c;看这个代码&#xff1a;classFather{privateString nameString;public voidspeak() {System.out.println(this.getC…

中软python编码规范考试试题_卓越分享 | 如何写出一手漂亮的Python代码?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼Python语言这么火&#xff0c;有很多同学是从其他语言转行过来的(比如c&#xff0c;java语言)&#xff0c;多多少少写代码的时候也会受其他语言的影响&#xff01;而对于刚开始学编程的小白同学来说&#xff0c;解决问题的思路有的…

间接寻址级别不同_被遗忘的利息税,国债与存款的利率区别,同大额存单的4点大不同...

2020年6月10日的储蓄式电子国债发行又一次与理财人擦肩而过&#xff0c;因为疫情管控原因&#xff0c;此次暂时不发行&#xff0c;那么下一个认购国债的窗口&#xff0c;就是7月10日&#xff0c;仍然是储蓄式电子国债&#xff0c;期限还是3年期和5年期两种。那么能如期发行吗&a…

java宠物健康值_宠物健康微手册:成年篇

在健康微手册幼年篇之后&#xff0c;成年篇也出炉了。这里所说的成年&#xff0c;也就是从1岁起&#xff0c;到大型犬的6岁左右&#xff0c;或者小型犬或猫猫的10岁左右。老年宠物的注意事项就留到下次再讲吧。身体检查&#xff1a;每年一到两次的身体检查很重要。小宠物不能告…