Python数字类型

来自CloudWiki
跳转至: 导航搜索

数字类型

Python语言提供3种数字类型:整数类型、浮点数类型和复数类型,分别对应数学中的整数、实数和复数。

n 1010是一个整数类型,10.10是一个浮点数类型,

10 + 10j是一个复数类型。

整数类型

  • python的整数类型与数学中整数的概念一致。
1010,99,-217,0x9a,-0x89

整数的进制

整数类型一共有四种进制表示十进制二进制,八进制和16进制。

  • 二进制:以“0B”或“0b”开头(比如0b101)
  • 八进制:以 “0o”或“0O”开头(比如0o510)
  • 十进制:比如10、29、40
  • 十六进制 :以“0x”或“0X”开头(比如0xA7A)
  • bin():十进制转换为二进制,输出形式是字符串
  • oct():十进制转换为八进制,输出形式是字符串
  • hex():十进制转换为十六进制,输入形式是字符串
  • int() :接收一个符合整型规范的字符串,并将字符串转换为整型
>>> bin(23)
'0b10111'
>>> oct(23)
'0o27'
>>> hex(23)
'0x17'
>>> int('23')
23
  • pow(x,y)函数
>>pow(2,100)
>>> s=123
>>> print(s)
123
>>> b= -25
>>> print(b)
-25
>>> d= s+b
>>> print(d)
98
>>> d=pow(2,3)
>>> print(d)
8

浮点数类型

什么是浮点数

带有小数点及小数的数字。

Python语言中的浮点数类型必须带有小数部分,小数部分可以是0。

例如:1010是整数,1010.0是浮点数。

浮点数类型

n 浮点数有2种表示方法:十进制形式的一般表示和科学计数法表示。

  • 浮点数有两种表示方法。十进制表示和科学计数法表示。
0.0 -77. -2.17 3.1416 96e4 4.3e-3 9.6E5

除十进制外,浮点数没有其他进制表示形式。

十进制表示的例子:

1010.0, -1010.

科学计数法使用字母e或者E作为幂的符号,以10为基数,含义如下:

 <a>e<b> = a*10b

上例中,1.01e3值为1010.0;-1.01E-3值为0.00101。

Python浮点数类型的数值范围和小数精度受不同计算机系统的限制。除高精度科学计算外的绝大部分运算来说,浮点数类型的数值范围和小数精度足够“可靠”。

>>>1234567890.987654321 * 1234567890.987654321
1.5241578774577044e+18
>>>9876543210.123456789 / 1234567890.987654321
7.000000066600002


  • 通过下面这条语句可以对浮点数进行赋值。
>>> b = 3.1416
>>> b
3.1416
>>> b = 10e5
>>> b
1000000.0
>>> a=3.1415
>>> print(a)
3.1415
>>> b= 6.3+a
>>> print(b)
9.4415

不确定尾数问题

python浮点数计算 存在一个“不确定尾数”问题:

>>> 0.1+0.2
0.30000000000000004
>>> 0.1+0.2 == 0.3
False

解决办法:保留确定的小数位数

>>> round(1.2346,2)
1.23
>>> round(0.1+0.2,3) ==0.3
True


复数类型

复数类型表示数学中的复数。复数有一个基本单位元素j,叫作“虚数单位”。

含有虚数单位的数被称为复数。例如:

11.3+4j -5.6+7j 1.23e-4+5.67e+89j

Python语言中,复数可以看作是二元有序实数对(a, b),表示为:a + bj,

其中,a是实数部分,简称实部,b是虚数部分,简称虚部。

  • Python语言中,复数的虚数部分通过后缀“J”或“j"来表示
>>> z =4 +5j
>>> z.real
4.0
>>> z.imag
5.0

需要注意,当b为1时,1不能省略,即 1j表示复数,

而j则表示Python程序中的一个变量。

布尔类型

Python中的布尔类型只有True和False两个取值;

True对应整数1,False对应整数0。

等同于False的值:

None;
False;
任何为0的数字类型,如0、0.0、0j;
任何空序列,如''''、()、[];
空字典,如{};
用户定义的类实例,如类中定义了__bool__()或者__len__()方法,并且该方法返回0或者布尔值False。