python笔记-数字类型

一、数字类型

python中常用数值类型为整型, 浮点型和复数类型.

  1. 整型
  2. 浮点型
  3. 复数类型
    • 复数包含实部和虚部,分别以一个浮点数表示。 要从一个复数 z 中提取这两个部分,可使用 z.realz.imag

此外,布尔值属于整数的子类型。 整数具有无限的精度浮点数通常使用 C 中的 double 来实现

数字是由数字字面值或内置函数与运算符的结果来创建的

  • 不带修饰的整数字面值(包括十六进制、八进制和二进制数)会生成整数
  • 包含小数点或幂运算符的数字字面值会生成浮点数
  • 数字字面值末尾加上 'j' 或 'J' 会生成虚数(实部为零的复数),你可以将其与整数或浮点数相加来得到具有实部和虚部的复数

二、数字类型支持的运算

  1. x + y: 返回xy的和
>>> 3.2 + 3
6.2
``
2. `x - y`: 返回`x`与`y`的差
```python
>>> 3.2 - 3  # 浮点数运算时不精确的
0.20000000000000018
  1. x * y: 返回xy的乘积
>>> 3 * 2
6
>>> 3.1 * 3
9.3
  1. x / y: 返回xy的商
>>> 5 / 3
1.6666666666666667
>>> 9 / 3
3.0
  1. x // y: 返回xy的商数
    • 也称为整数除法。 结果值是一个整数,但结果的类型不一定是 int
    • 运算结果总是向负无穷的方向舍入: 1//2 为 0, (-1)//2 为 -1, 1//(-2) 为 -1 而 (-1)//(-2) 为 0
>>> 3 //2
1
>>> 3.2 // 3
1.0
``
6. `x % y`: 返回`x / y`的余数
      * 不可用于复数
```python
>>> 17 % 4
1
  1. -x: x取相反数
>>> -10
-10
  1. +x: x不变
>>> x = -10
>>> +x
-10
>>> -x
10
  1. x ** y: xy次幂
    • Python 将 pow(0, 0) 和 0 ** 0 定义为 1,这是编程语言的普遍做法
>>> 2 ** 3
8
>>> 0 ** 0
1
  1. abs(x): 返回x的绝对值, 如果x为复数, 返回模长
>>> abs(-10)
10
>>> abs(3 + 4j)
5.0
  1. int(x): 将x转换为整数
    • 从浮点数转换为整数会被舍入或是像在 C 语言中一样被截断
    • 接受的数字字面值包括数码 09 或任何等效的 Unicode 字符(具有 Nd 特征属性的代码点)
>>> int(2.3)
2
>>> int("2")
2
  1. float(x): 将 x 转换为浮点数
    • float 也接受字符串 "nan" 和附带可选前缀 "+" 或 "-" 的 "inf" 分别表示非数字 (NaN) 以及正或负无穷
    • 接受的数字字面值包括数码 09 或任何等效的 Unicode 字符(具有 Nd 特征属性的代码点)
>>> float(3)
3.0
>>> float("3.2")
3.2
>>> float("nan")
nan
>>> float("+inf")
inf
>>> float("-inf")
-inf
  1. complex(re, im): 一个带有实部 re 和虚部 im 的复数。im 默认为0
    • 接受的数字字面值包括数码 0 到 9 或任何等效的 Unicode 字符(具有 Nd 特征属性的代码点)
>>> complex(3, 4)
(3+4j)
>>> complex(2)
(2+0j)
>>> complex(3.3,2.1)
(3.3+2.1j)
  1. c.conjugate(): 复数 c 的共轭复数
>>> c = 3+4j
>>> c.conjugate()
(3-4j)
  1. divmod(x, y): 返回(x // y, x % y)
    • 不可用于复数。 而应在适当条件下使用 abs() 转换为浮点数
>>> divmod(19, 5)
(3, 4)
  1. pow(x, y): xy 次幂
    • Python 将 pow(0, 0) 和 0 ** 0 定义为 1,这是编程语言的普遍做法
>>> pow(2,3)
8
  1. math.trunc(x): x 截断为整数
>>> math.trunc(3.14)
3
  1. round(x, n): x舍入到n位小数,半数值会舍入到偶数。 如果省略n,则默认为 0
>>> round(3.1415, 2)
3.14
>>> round(3.1415)
3
  1. math.floor(x): <= x的最大整数
>>> math.floor(3.11)
3
  1. math.ceil(x): >= x的最小整数
>>> math.ceil(3.4)
4

三、整数位运算

  • 按位运算只对整数有意义
  • 计算按位运算的结果,就相当于使用无穷多个二进制符号位对二的补码执行操作
  • 二进制按位运算的优先级全都低于数字运算,但又高于比较运算
  • 一元运算 ~ 具有与其他一元算术运算 (+ and -) 相同的优先级

优先级升序排序

  1. x | y: xy 按位 或
>>> bin(2)
'0b10'
>>> bin(5)
'0b101'
>>> 2 | 5
7
  1. x ^ y: xy 按位 异或
>>> bin(2)
'0b10'
>>> bin(5)
'0b101'
>>> 2 ^ 5
7
  1. x & y: xy 按位 与
>>> bin(2)
'0b10'
>>> bin(5)
'0b101'
>>> 2 & 5
0
  1. x << n: x 左移 n
    • 负的移位数是非法的,会导致引发 ValueError
    • 左移n位等价于乘以pow(2, n)
>>> x = 3
>>> x << 2
12
>>> x * pow(2, 2)
12
  1. x >> n: x 右移 n
    • 负的移位数是非法的,会导致引发 ValueError
    • 向右移动n位等价于按pow(2,n)进行整数除法。
>>> x = 3
>>> x >> 2
0
>>> x // pow(2, 2)
0
  1. ~x: x 逐位取反
>>> x =3
>>> ~x
-4
原文地址:https://www.cnblogs.com/duyupeng/p/13061468.html