03 Python数值类型及数字类型详解

Python的9大数值类型

  Python中有4种数字类型和5种序列类型,共9种数值类型。

  4种数字类型分别是:整型(int),浮点型(float),复数(complex),布尔值(bool)。

  5种序列类型分别是:列表(list),字符串(str),元组(tuple),字典(dict),集合(set)。

使用 type() 函数可以查看数值类型以及其他类型,可向type()传参数为变量或值,返回类型。

在Python自带的IDLE中尝试以下代码:

a = 3
print(type(a))
b = 2.1
print(type(b))
c = "Hello world !"
print(type(c))
d = True
print(type(d))

执行结果是:

<class 'int'>
<class 'float'>
<class 'str'>
<class 'bool'>

 

整型(int)

  就是整数,Python中的整数是没有大小限制的,写多少位都可以,只要你内存够。

  int()函数可以将其他类型强制转化成整数类型,但并不是所有都可以转化。

下面代码是将字符串转化成整数。

date = "20190713"
print(type(date))
datenum = int(date)
print(datenum)
print(type(datenum))

执行结果为:

<class 'str'>
20190713
<class 'int'>

 

浮点型(float)

  就是小数,双精度储存,与java中的double类型一样。小数在python中叫浮点数,位数不固定。无限循环小数默认保留16位。

  类似于int(),float()函数可以将其他类型强制转化成浮点型。

a = True
print(float(a))

执行结果为:

1.0

 

  python解释器中由于小数是双精度的,有的非循环小数储存的其实是个无限循环小数,显示默认16位。这会造成计算误差。

比如下列代码:

print(1.2-1)
print(0.2*0.2)

执行结果为:

0.19999999999999996
0.04000000000000001

为了精确计算,解决方法有两个,round函数和Decimal函数。

  方法一:round(算式,保留位数) 

print(round(0.2*0.2, 2))

执行结果:

0.04

方法二:导入Python自带的decimal模块中的Decimal类,类中有个方法叫函数叫Decimal(),注意使用Decimal时括号只能传字符串数字。

 

from decimal import Decimal
a = Decimal('0.2')*Decimal('0.2')
print(a)

执行结果:

0.04

 

布尔型(bool)

只有True和False两种,一般用于条件判断。若在计算中使用布尔值,False代表0,True代表1。注意布尔值首字母大写。例如e=True或e=False。

e=True+False
print(e)

执行结果:

1

 

复数(complex)

首先理解什么是虚数,初中我们就学过虚数?

首先我们导入math和cmath模块使用平方根函数来理解虚数。

sqrt()就是开平方函数,我们用math包中的实数开平方函数给-1开平方。

from math import sqrt
sqrt(-1)

负数没有平方根,执行结果当然会报错:

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

ValueError: math domain error

若我们用cmath中的虚数开平方函数给-1开平方呢?

from cmath import sqrt
sqrt(-1)

执行结果:

1j

  我们利用math模块的sqrt对-1开平方,结果报错了,因为-1开平方结果不是实数。我们再利用cmath模块的sqrt对-1开平方,结果是1j。j就是虚数,1个j表示-1的平方根,系数1不能省略。

  由实部和虚部组成的数就是复数,实部就是实数,虚部只能用n倍的 j 代替,1倍的j也要打上1,例如赋值e=1+2j,1+2j就是复数,a=5+1j,5+1j就是复数。Python编程基本用不到复数。复数其实是个对象,查看实部输入<object>.real,查看虚部系数输入<object>.imag,即查看对象属性。

 例如下面的代码:

e=1+2j
print(type(e))
print(e.real)
print(e.imag)

执行结果为:

<class 'complex'>
1.0
2.0

 

数字类型运算符

四则运算:加+,减-,乘*,除/

print(4+2)
print(4-2)
print(4*2)
print(4/2)

执行结果:

6
2
8
2.0

 

向下圆整://,取小于等于计算结果的最近整数。

print(5//3)

执行结果:

1

 

向上圆整:取大于等于计算结果的最近整数。需要使用math模块的ceil()函数,()里可填算式或小数,算法是消除计算结果的小数,整数+1。

import math
a = math.ceil(5/3)
print(a)

执行结果为:

2

 

除法取余:%,算法是a%b = a - (a//b)*b

print(5%3)

执行结果(5除以3商是1余2。)为:

2

 

幂运算:**

print(5**3)

执行结果为:

125

 另外math包中有很多函数可以替代运算符,比如幂运算函数pow(),我们计算4的3次方。其他诸如此类函数请查阅Python的API 文档。

import math
mi = pow(4, 3) print(mi)

执行结果为:

64

posted @ 2019-07-10 10:20  上海一亩地  阅读(997)  评论(0编辑  收藏  举报