Python的数值类型及操作

有四种不同的数值类型:普通整数长整数浮点数复数此外,布尔值是普通整数的一个子类型。普通整数(或者简称整数)使用C中的long实现,其精度至少为32位(sys.maxint始终设置为当前平台最大的普通整数值,最小值是-sys.maxint - 1)。长整数具有无限的精度。浮点数字通常使用C中的double实现;有关你的程序所运行的机器上的浮点数精度及其内部表示形式的信息在sys.float_info中可以获得。复数有实部和虚部,各是一个浮点数。若要从复数z中提取这些部分,请使用z.realz.imag(标准库包括额外的数值类型,fractions支持有理数,decimal支持用户自定义精度的浮点数。)

数值通过数字字面值或内建的函数和操作的结果创建。普通的整数字面值(包括二进制、十六进制和八进制数字)产生普通整数,除非它们指定的值太大以致不能用一个普通的整数表示,在这种情况下它们产生一个长整型。带有'L''l'后缀的整数字面值产生长整数(偏向使用'L',因为1l看起来太像十一)。包含小数点或指数符号的数字字面值产生浮点数。'j''J'附加到数字字面值的尾部产生实部为零的复数。复数字面值是实部和虚部的和。

Python完全支持混合的算法:当二元算术运算符的操作数是不同的数值类型时,“较窄”类型的操作数会拓宽成另外一个操作数的类型,其中整数窄于长整数窄于浮点数窄于复数。比较混合型数字之间使用相同的规则。[2]构造函数int()long()float()complex()可用于产生的一种特定类型的数值。

所有内置的数值类型都支持以下操作。运算符的优先级请参阅幂运算符和后面几节。

操作 结果
x + y xy  
x - y xy的差  
x * y xy的积  
x / y xy的商 (1)
x // y xy的(整除)商 (4)(5)
x % y x / y的余数 (4)
-x x  
+x x保持不变  
abs(x) x的绝对值或大小 (3)
int(x) x转换成整数 (2)
long(x) x转换成长整数 (2)
float(x) x转换成浮点数 (6)
complex(re,im) 实部为re,虚部为im的一个复数。im默认为零。  
c.conjugate() 复数c的共轭。(用实数表示)  
divmod(x, y) 元组(x // y, x % y) (3)(4)
pow(x, y) xy次方 (3)(7)
x ** y xy次方 (7)

注:

  1. 对于(普通或长)整数除法,结果是一个整数。结果总是向负无穷舍入:1/2是0,(-1)/2是-1,1/(-2)是-1,(-1)/(-2)是0。请注意如果任何一个操作数是长整数,结果都会是一个长整数,与值大小无关。

  2. 使用int()long()函数转换浮点数会向零截断,类似相关的函数math.trunc()函数。使用函数math.floor()以向下取整和math.ceil()以向上取整。

  3. 完整的说明请参阅内置函数

  4. 从2.3版开始弃用:整除运算符、取模运算符和divmod()函数不再为复数定义。相反,如果合适,可以使用abs()函数转换为浮点数。

  5. 也被称为整数除法。结果的值完全是一个整数,虽然结果的类型不一定是整型。

  6. 浮点数还接受可带有可选前缀 "+"或"-"的字符串"nan"和"inf"来表示非数字(NaN))和正/负无穷。

    在2.6版中新增。

  7. Python定义pow(0,0)0 ** 01,这对于编程语言很常见。

所有的numbers.Real类型(intlongfloat)还包含以下的操作:

操作 结果
math.trunc(x) x截取成整数  
round(x[, n]) x舍入到n位,舍入ties away from零。如果n省略,默认为0。  
math.floor(x) <= x的最大浮点整数  
math.ceil(x) >= x的最小浮点整数  
如果引用本站的原创文章,请注明原文链接:,本站保留追究责任的权利!

发表评论