Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)

Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)数字提供了标量贮存和直接访问 它是不可更改类型 也就是说变更数字的值会生成新的对象 这个过程对程序员和用户是透明的 Python 支持多种数字类型 整型 布尔型 双精度浮点型和复数 整型 Python 里面的整型默认就能表示很大的整型 可以是十进制 八进制 十六进制 八进制以 0o 开头 第一个字符是数字 0 第二个字符是字母 o 或 O 十六进制以 0x 开头 第一个字符是数字 0 第二个字符是字母 x 或 X 十进制在 Python3 x 版本中不支持后面加 l 或 L print print 0

数字提供了标量贮存和直接访问。它是不可更改类型,也就是说变更数字的值会生成新的对象。这个过程对程序员和用户是透明的。

Python支持多种数字类型:整型、布尔型、双精度浮点型和复数。

整型

Python里面的整型默认就能表示很大的整型。可以是十进制、八进制、十六进制。八进制以0o开头(第一个字符是数字0,第二个字符是字母o或O),十六进制以0x开头(第一个字符是数字0,第二个字符是字母x或X)。十进制在Python3.x版本中不支持后面加“l”或“L”。

print() print(0o156) print(0x178)

Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)

布尔型

布尔类型是只有两个值的整型:True和False。

双精度浮点型

浮点型值通常都有一个小数点和一个可选的后缀e(小写或者大写,表示科学计数法)。在e和指数之间可以用正(+)或负(-)表示整数的正负(正数的话可以省略符号)。

print(0.0) print(-777.) print(1.6) print(-5.545) print(96e3) print(4.2E-10) print(6.022e23)

Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)

复数

(不重要)规定(现阶段复数用得少,这些规定没那么必要了):

  • 虚数不能单独存在,它们总是和一个值为0.0的实数部分一起来构成一个复数(现版本没有这个要求)
  • 复数由实数部分(可选)和虚数部分构成
  • 表示虚数的语法:real(可选) + imag j
  • 实数部分和虚数部分都是浮点型(复数0表示为0.0+0.0j,上机验证0j也对)
  • 虚数部分必须有后缀j或J
print(64.454+5j) print(6.45-8.5j) print(1.23e-045+6.7e+089j) print(-1.23-897j)

Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)

复数的内建属性

Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)

操作符

混合模式操作符

Python使用数字类型强制转换的方法来解决数字类型不一致的问题,也就是说它会强制将一个操作数转换为同另一个操作数相同的数据类型。这种操作不是随意进行的,它遵循以下基本规则。

首先,如果两个操作数都是同一种数据类型,没有必要进行类型转换。仅当两个操作数类型不一致时, Python才会去检查一个操作数是否可以转换为另一类型的操作数。如果可以,转换它并返回转换结果。由于某些转换是不可能的,比如将一个复数转换为非复数类型,将一个浮点型转换为整型等,因此转换过程必须遵守几个规则。

要将一个整型转换为浮点型,只要在整型后面加个“0”就可以了。要将一个非复数转换为复数,则只需要要加上一个“0”的虚数部分。这些类型转换的基本原则是:整型转换为浮点型,非复数转换为复数。在 Python语言参考中这样描述 coerce方法

  1. 如果有一个操作数是复数,另一个操作数被转换为复数;否则,如果有一个操作数是浮点型,另一个操作数被转换为浮点型;否则,如果有一个操作数是长整型,则另一个操作数被转换为长整型;
  2. 否则,两者必然都是普通整型,无须类型转换。

即复数>浮点数>整型>布尔型

标准类型操作符

对象值的比较

所有的内建类型均支持比较运算,比较运算返回布尔值True或False。

不讨论复数。

Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)

对象身份比较

Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)

布尔类型

Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)

print(5.2==5.2) print(-719>=833) print(2<3<4) print(77>66==66) #等价于(77>66)and(66==66) print(0.<-90.4<55.3e2!=3<181)#短路 print((-1<1)or(1<-1))

Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)

算术操作符

Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)

说明:

1.expr1expr2 是幂运算,幂运算操作符和一元操作符之间的优先级关系比较特别:幂运算操作符比其左侧操作数的一元操作符优先级高,比其右侧操作数的一元操作符的优先级低。 如下例:

print(32) print(-32) print((-3)2) print(4.0-1.0) print(4-1) #并不会报错

Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)

2. expr1%expr2是取模运算,其中浮点数取余规则是商取小于等于精确值最大的整型的乘积只差,即x-(math.floor(x/y)*y)。对于复数不适用。

print(5.3%2.5) print(6.8%2.7)

Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)

print((3+2j)%6)

Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)

3. expr1/expr2与expr1//expr2区别:expr1/expr2得到正常的结果,expr1//expr2得到向下取整的结果。

print(3/2) print(3//2)

Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)

位操作符(只适用于整型)

Python整型支持标准位运算:取反(~),按位与(&)、或(|)和异或(^),以及左移(<<)和右移(>>)。 Python这样处理位运算。

  1. 负数会被当成正数的2进制补码处理。
  2. 左移和右移N位等同于无溢出检查的2的N次幂运算:2N。
  3. 对长整型来说,位操作符使用一种经修改的2进制补码形式,使得符号位可以无限向左扩展。

取反(~)运算的优先级与数字单目操作符相同,是所有位操作符中优先级最高的一个。左移和右移运算的优先级次之,但低于加减法运算。与、或、异或运算优先级最低。所有位操作符按优先级高低列在表5.4

Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)

注:手动计算的方法是把这些整型转化成二进制数,再进行取反、左移、右移、按位与(同为1时为1,其他为0)、按位或(同为0时为0,其他为1)、异或(相同为0,不同为1)

print(30&45) print(30|45) print(45&60) print(45|60) print(~30) print(~45) print(45<<1) print(60>>2) print(30^45)

Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)

内建函数与工厂函数

标准类型函数

Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)

注意:Python3已经没有cmp()函数了。

数字类型函数

转换工厂函数(重点介绍int())

Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)

注意:Python 3版本已经不支持long()了。

说明:
int(x, base=10)   返回值一定都是十进制整数。
x 有两种:str / int。

1、若 x 为纯数字,则不能有 base 参数,否则报错;其作用为对入参 x 取整

print(int(4.)) print(int(4.,base=8))

Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)

2、若 x 为 str,且str必须是整数,则 base 可略可有。

base 存在时,视 x 为 base 类型数字,并将其转换为 10 进制数字。

若 x 不符合 base 规则,则报错。如:

print(int('9',2)) #报错,因为2进制无9

Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)

print('9') #默认十进制

Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)

print(int('3.14',8)) #均报错,str须为整数 print('1.2')

Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)

print(int('1001',2)) #二进制 print(int('123',8)) #八进制 print(int('a',16)) #十六进制

Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)

功能函数 abs() divmod()  pow() round()

Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)

Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)

注意:Python 3已经舍弃了coerce()。

说明:

abs()返回给定参数的绝对值。

divmod()内建函数把除法和取余运算结合起来,返回一个包含商和余数的元组。对整型来说,它的返回值就是向下取整和取余操作的结果。对浮点型来说,返回的商部分是 math. floor(numl/mum2)。

print(divmod(10,3)) print(divmod(2.5,10))

Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)

pow()和双星号()操作符都可以进行指数运算。不过二者的区别并不仅仅在于一个是操作符,一个是内建函数。pow()还接受第三个可选的参数,即一个余数参数,如果有这个参数,pow()先进行指数运算,然后将运算结果和第三个参数进行取余运算。这个特性主要用于密码运算,并且比 pow(x, y)%z性能更好。

print(pow(2,5)) print(pow(5,2)) print(pow(2,5,2))

Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)

round()用于对浮点型进行四舍五入运算。它有一个可选的小数位数参数。如果不提供小数位参数,它返回与第一个参数最接近的整型(但仍然是浮点类型)。第二个参数告诉 round函数将结果精确到小数点后指定位数。

print(round(3.45)) print(round(3.)) print(round(3.,1)) print(round(3.3655,2)) print(round(3.5))

Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)

int()、math.floor()、math.ceil()、round()区别

  • 函数int()直接截去小数部分
  • 函数 math.floor()得到小于等于原数的最小整数
  • 函数 math.ceil()得到大于等于原数的最小整数
  • 函数 round()得到最接近原数的整型(四舍五入)
import math print(int(0.2),end=' ') print(math.floor(0.2),end=' ') print(round(0.2)) print(int(0.7),end=' ') print(math.floor(0.7),end=' ') print(round(0.7)) print(int(-0.2),end=' ') print(math.floor(-0.2),end=' ') print(round(-0.2)) print(int(-0.7),end=' ') print(math.floor(-0.7),end=' ') print(round(-0.7))

Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)

仅用于整型的函数

进制转换函数

Python提供了两个内建函数来返回字符串表示的八进制和十六进制整型,它们分别是oct()和hex()。它们都接受一个整型(任意进制的)对象,并返回一个对应值的字符串对象。下面是几个示例。

print(hex(255)) print(hex(65535*2)) print(oct(255)) print(oct(65535*2))

Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)

ASCII转换函数

Python也提供了ASCII(美国标准信息交换码)码与其序列值之间的转换函数。每个字符对应一个唯一的整型(0~255)。对所有使用ASCI表的计算机来说,这个数值是不变的。这保证了不同系统之间程序行为的一致性。函数chr()接受一个单字节整型值,返回一个字符串,其值为对应的字符。函数ord()则相反,它接受一个字符,返回其对应的整型值。

print(ord('a')) print(ord('A')) print(chr(97)) print(chr(65))

Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)

控制数字精度

round()内置方法

round()不是简单的四舍五入(银行家舍入,四舍六入五双留),第二个参数可以选择保留几位小数。

round()如果只有一个数作为参数,不指定位数的时候,返回的是一个整数,而且是最靠近的整数(这点上类似四舍五入)。但是当出现.5的时候,两边的距离都一样,round()取靠近的偶数,这就是为什么round(2.5) = 2。当指定取舍的小数点位数的时候,一般情况也是使用四舍五入的规则,但是碰到.5的这样情况,如果要取舍的位数前的数是奇数,则直接舍弃,如果偶数则向上取舍。

from decimal import * print(round(2.635,2)) print(round(2.535,2)) print(round(2.645,2)) print(round(2.655,2)) print(round(2.665,2)) print(round(2.675,2)) print(round(1.35,1)) print(round(1.65,1)) print(Decimal.from_float(2.635)) print(Decimal.from_float(1.35)) print(Decimal.from_float(1.65))

Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)

from decimal import * print(Decimal.from_float(3.1250)) print(Decimal.from_float(9.8350)) print(Decimal.from_float(3.2250)) print(Decimal.from_float(9.3750)) print(round(3.1250,2)) print(round(9.8350,2)) print(round(3.2250,2)) print(round(9.3750,2))

Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)

使用格式化

效果和round()一样。

a = ("%.2f" % 2.637) print(a)

Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)

更多Python框架梳理,请参考: 【Python学习】Python最全总结

 有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232638.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 传奇自己架设自己玩_怎么架设传奇服务器

    传奇自己架设自己玩_怎么架设传奇服务器需要的东西与操作1.版本可以去论坛版本库2.DBC2000(百度有下)3.配套登录器(有些引擎自带)简单来说单机架设分为三步1.配置引擎2.上传列表,配置登录器3.补丁解压到客户端根目录首先下好版本之后会有两个压缩包,一个为服务端,一个为游戏补丁;1.百度下载好DBC2000进行解压然后安装即可。2.服务端解压到D盘,名字必须为Mirserver3.开始配置DBC2000,安装好DBC2000之后,在你的电脑里面的控制面板里面会有一个DBE-打开之后右键空白部分new

    2022年10月6日
    2
  • ubuntu安装nginx教程_ubuntu服务器安装教程

    ubuntu安装nginx教程_ubuntu服务器安装教程ubuntu系统安装nginx

    2022年9月19日
    2
  • docker 镜像构建_docker生成镜像

    docker 镜像构建_docker生成镜像前言如果我们已经安装了一个python3的环境,如果另一台机器也需要安装同样的环境又要敲一遍,很麻烦,这里可以配置Dockerfile文件,让其自动安装,类似shell脚本Dockerfile编写

    2022年7月30日
    7
  • Centos7安装MySQL详细步骤

    Centos7安装MySQL详细步骤Centos7安装MySQL详细步骤首先在虚拟机中安装一个Centos7(VM虚拟机安装Centos7)1.1MySQL安装1.1.1下载wget命令yum-yinstallwget1.1.2在线下载mysql安装包wgethttps://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm1.1.3安装MySQLrpm-ivhmysql57-community-release-el7-8.noar

    2022年6月13日
    25
  • phpstudy最新版中php5.6版报错

    phpstudy最新版中php5.6版报错

    2021年10月13日
    51
  • 快速熟悉 PyQt5 与 Eric6 的极速 GUI 开发

    完美安装Anaconda3+PyQt5+Eric6一文对PyQt5与Eric6的安装做了详细的记录。这次将结合使用PyQt5和Eric6以实例的方式向大家展示PyQt5与Eric6的极速GUI开发,同时也可以让大家对PyQt5与Eric6先混个脸熟。用Eric6与PyQt5结合,非常方便的实现界面与逻辑分离,满足python的极速GUI编程,你只需要关注程序的逻辑实现,而不需要在

    2022年4月8日
    67

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号