python学习笔记2-数值类型

Python中的数值类型包括int、float和complex三种类型。

int

Python中的int类型是无限精度的。默认是十进制的,也可以使用其他进制,比如二进制,八进制和十六进制。

二进制以 0b 开头,如 0b110  ,  十进制的 6

八进制以 0o 开头,如 0o11 , 十进制的 9

十六进制以 0x 开头,如 0xff ,十进制的 255

float

Python中的float相当于c语言中双进度浮点型数据。 如 12.123  , 123.23 等,或者 123e3 ,123E3 ,表示 123*10的3次方。

complex 复数

复数由实数部分和虚数部分组成,一般形式为 x+yj。其中,x 是实数部分,y 是虚数部分。如,23+3j,2+5j等。如果实数部分为0,则可以忽略。

虚数的表示法为z=a+bj,其中a和b是float类型的数字。如果要单独获取a用z.real,单独获取b用z.imag。

d = 12.1 + 12j
print(d.real,d.imag)  # 12.1 , 12.0

如果需要对数值进行转型(可以从字符串转化),可以用int(),float()和complex()函数。int还支持将其他进制的字符串数值转为十进制:

>>> int("0213",8)
139
>>> int("0xa231",16)
41521

也可以 用 bin(x) , oct(x) , hex(x)  把 x字符串转换为二进制,八进制和十六进制数据。

同时可以用int.bit_length()方法来获取二进制的长度

>>> n = 16
>>> n.bit_length()
5
>>> bin(n)
'0b10000'

运算符

Python支持一般的加减乘除运算,需要注意的是除法运算返回的结果是float型的,即2/1=2.0。如果需要返回的是int型数值,需要使用//符号,这个符号相当于先做除法,再做floor()运算。以下再罗列一下特殊的运算符和函数:

conjugate

这是一个针对虚数的方法,用来求虚数的共轭虚数(改变虚数部分的符号):

>>> (1+2j).conjugate()
(1-2j)

divmod

这个函数用来返回两个数的商和余数:

>>> divmod(7,3)
(2, 1)

pow

pow是用来求x的y次方的,在Python中还可以用**来实现相同的功能:

>>> pow(2,3)
8
>>> 2**3
8

abs

abs用来表示绝对值,但如果用在虚数上,则可以对虚数求模,获得一个float型的数值:

>>> abs(3-2j)
3.6055512754639896

数值精度

下面介绍Python用于数值精度方面的常用函数:

math.trunc(x)

保留x的整数部分,忽略小数点后的数。

round(x[,n])

对x进行四舍五入,保留n位小数。

math.floor(x)

小于等于x的最大整数。

math.ceil(x)

大于等于x的最小整数。

注:很多人会问trunc和floor的区别,其实对于正数,它们没什么区别,但对于负数请看:

>>> math.trunc(-2.9)
-2
>>> math.floor(-2.9)
-3

float方法探究

下面罗列一下float中额外的一些方法:

float.as_integer_ratio()

将一个float用分数表示出来,返回的是一个二元元组。

>>> float.as_integer_ratio(3.0)
(3,1)

float.is_integer()

判断一个float型数字是否是整数,返回布尔值。

>>> 3.1.is_integer()
False

十六进制

float与十六进制的转换是通过float.hex()和float.fromhex(s)实现的,具体看如下代码:

>>> float.hex(163.2)
'0x1.4666666666666p+7'
>>> 163.2.hex()
'0x1.4666666666666p+7'
>>> float.fromhex('0x1.4666666666666p+7')
163.2

指数用p(冥)表示,因为e是一个有效的十六进制数字。

以上内容参考了https://blog.csdn.net/u013291394/article/details/50364862,并做了适当修改和补充。

猜你喜欢

转载自blog.csdn.net/weixin_42703239/article/details/81463372