5.字节到大整数的转换
#拥有128位长的16个元素的字节字符串。 >>> data = b‘\x00\x124V\x00x\x90\xab\x00\xcd\xef\x01\x00#\x004‘ >>> len(data) 16 将bytes解析为整数,使用 int.from_bytes() 方法 #仅使用与python3 #字节顺序规则(little或big)仅仅指定了构建整数时的字节的低位高位排列方式。 >>> int.from_bytes(data, ‘little‘) 69120565665751139577663547927094891008 >>> int.from_bytes(data, ‘big‘) 94522842520747284487117727783387188 >>> 将一个大整数转换为一个字节字符串,使用 int.to_bytes() 方法,并像下面这样指定字节数和字节顺序: >>> x=94522842520747284487117727783387188 >>> x.to_bytes(16,‘big‘) b‘\x00\x124V\x00x\x90\xab\x00\xcd\xef\x01\x00#\x004‘ >>> x.to_bytes(16,‘little‘) b‘4\x00#\x00\x01\xef\xcd\x00\xab\x90x\x00V4\x12\x00‘ >>> 使用 int.bit_length() 方法来决定需要多少字节位来存储这个值 >>> x=94522842520747284487117727783387188 >>> x.bit_length() 117
6.复数的数学运算
复数可以用使用函数 complex(real, imag)
或者是带有后缀j的浮点数来指定
>>> a = complex(2, 4) >>> b= 3-5j >>> a (2+4j) >>> b (3-5j) 对应的实部、虚部和共轭复数 >>> a.real 2.0 >>> a.imag 4.0 >>> a.conjugate() (2-4j) 所有常见的数学运算都可以工作 >>> a+b (5-1j) >>> a-b (-1+9j) >>> a/b (-0.4117647058823529+0.6470588235294118j) >>> abs(a) 4.47213595499958 执行其他的复数函数比如正弦、余弦或平方根,使用cmath模块 >>> import cmath >>> cmath.sin(a) (24.83130584894638-11.356612711218173j) >>> cmath.cos(a) (-11.36423470640106-24.814651485634183j) >>> cmath.exp(a) (-4.829809383269385-5.5920560936409816j) Python的标准数学函数确实情况下并不能产生复数值 >>> import math >>> math.sqrt(-1) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: math domain error >>> import cmath >>> cmath.sqrt(-1) 1j
7.无穷大与NaN
创建或测试正无穷、负无穷或NaN(非数字)的浮点数
>>> a = float(‘inf‘) >>> b = float(‘-inf‘) >>> c = float(‘nan‘) >>> a inf >>> b -inf >>> c nan 使用 math.isinf() 和 math.isnan() 函数检测 >>> math.isinf(a) True >>> math.isnan(c) True >>> math.isinf(b) True 无穷大数在执行数学计算的时候会传播 >>> a+45 inf >>> a*10 inf >>> 10/a 0.0 有些操作时未定义的并会返回一个NaN结果。 >>> a/a nan >>> a+b nan NaN值会在所有操作中传播,而不会产生异常。 >>> c+11 nan >>> c/3 nan >>> c*3 nan NaN值的一个特别的地方时它们之间的比较操作总是返回False。 >>> d=float(‘nan‘) >>> c==d False >>> c is d False 由于这个原因,测试一个NaN值得唯一安全的方法就是使用 math.isnan()
8.分数运算
fractions模块可以被用来执行包含分数的数学运算。
>>> from fractions import Fraction >>> a =Fraction(5,4) >>> b = Fraction(7, 16) >>> a Fraction(5, 4) >>> b Fraction(7, 16) >>> print a+b 27/16 >>> print a*b 35/64 取分子分母 >>> c= a*b >>> c.numerator 35 >>> c.denominator 64 换算成小数 >>> float(c) 0.546875 限制分母 >>> c.limit_denominator(8)#分母不超过8的最接近的分数 Fraction(4, 7) float转换为分数 >>> x=1.75 >>> y = Fraction(*x.as_integer_ratio()) >>> y Fraction(7, 4)
时间: 2024-10-06 21:13:17