01 Python中的数字类型

数字类型包括整数、浮点数、复数、小数和分数。

  • 整数类型

python判断等于1 python中判断数字_python

整数类型就是不带小数点的数。例如123、-12,Python3不再区别整数和长整数,只要计算机内存空间足够,整数理论上可以无穷大。一般的整型常量都是十进制的。Python还允许将整型常量表示为二进制、八进制和十六进制。

  • 二进制:以0b或0B开头,后面是二进制数字(0或1)。例如0b101、0B11
  • 八进制:以0o或0O开头,后面是八进制数字(0-7)。例如0o15、0o123
  • 十六进制:以0x或0x开头,后面是十六进制数字(0-9、A-F或a-f),例如0x12AB

不同进制只是整数的不同书写形式,Python程序运行时会将整数处理为十进制数。例如:

2**100 # 2的100次方 1267650600228229401496703205376
9**100 
'''
9的100次方,数很大,结果为:
18299438469904400126561398887587476933878132203577962682923345265339495974574961739092490901302
'''
  • 浮点数类型

浮点数类型的名称为float,实际上用于表示小数,如12.5、2.5、3.0、1.23e+10、1.23E-10等都是合法的浮点数常量。与整数不同,浮点数存在取值范围,超过取值范围会产生溢出错误(OverflowError)。浮点数的取值范围为-10{308}~~~10{308}。例如:

# 小数点后的0可以省略 2.0
print(2.)   
# 0小数点前的0可以省略 0.5
print(.5) 
print(10**308)   # 1e+308
print(10**309)    # 超出浮点数范围
'''
Traceback ( most recent call last ) :
File " < stdin > " , line 1 , in < module >
OverflowError : ( 34 , ' Result too large ' )
'''
print(-10**308)   #  -1e+308
print(-10.0**309)    # 超出浮点数范围
'''
Traceback ( most recent call last ) :
File "<stdin>", line 1, in cnodule
Overflowerror : ( 34 , " Result too large ' )
'''
  • 复数类型

复数类型的名称为complex。复数常量表示为实部+虚部形式,虚部以j或J结尾。例如,2+3j、2-3J、2j。可用complex()函数来创建复数,其基本格式如下:

complex(2, 3)    # complex(实部,虚部) (2 + 3j)
  • 小数类型

python判断等于1 python中判断数字_python_02

诶?上面的浮点数不是说是浮点数就是小数吗?怎么又来一个小数类型?是这样的,因为计算机的硬件特点,计算机不能对浮点数执行精确运算,例如:

# 计算结果并不是1.0 是 0.999999999999999
print(0.3+0.3+0.3+0.1) 

# 计算结果并不是0 是 -2.7755575615628914e-17
print(0.3-0.1-0.1-0.1)

因此Python自2.4版本开始引入了一种新的数字类型:小数对象。小数可以看作是固定精度的浮点数,它有固定的位数和小数点,可以满足规定精度的计算。创建使用小数对象

from decimal import Decimal # 从模块导入函数
d = Decimal('0.3') + Decimal('0.3') + Decimal('0.3') + Decimal('0.1')
print(d) # 1.0
d = Decimal('0.3') - Decimal('0.1') - Decimal('0.1') - Decimal('0.1')
print(d) # 0.0
print(type(Decimal ('1.0')) # <class 'decimal.Decimal'>

小数的全局精度全局精度指作用于当前程序的小数的有效位数,默认全局精度为28位有效数字。可使用decimal 模块中的上下文对象来设置小数的全局精度。用法如下:

# 导入模块
from decimal import * 
 # 用默认精度计算小数 Decisal ('0. 33333333333333333333')
  print(Decimal ('1') / Decimal ('3'))
# 获得上下文对象
context=getcontext ( ) 
# 设置全局小数精度为5位有效数字
context.prec = 5 
print(Decimal('1')/Decimal('3')) # Decimal ('0.33333')
print(Decimal('10') / Decimal('3')) # Decimal ('3.3333')

小数的临时精度临时精度在with模块中使用。用法如下:

with localcontext() as local :
 local.prec=3
 Decimal('1') / Decimal('3')   # 0.333
 Decimal('10') / Decimal('3')   # 3.33
  • 分数类型

python判断等于1 python中判断数字_开发语言_03

分数对象明确地拥有一个分子和分母,且分子和分母保持最简,使用分数可以避免浮点数的不精确性。分数使用fractions模块中的Fraction()函数创建,其基本语法格式如下。

from fractions import Fraction
x=Fraction(2,8)
print(x) # 1/4 
print(x+2) # 4/9
print(x-2) # -7/4
print(x*2) # 1/2
print(x/2) # 1/8

可以使用Fraction.from_float()函数将浮点数转换为分数,例如:

Fraction.from_float(1.25)   # 5/4

02 布尔类型

Python中不尔类型只有两个值,True和False,表示真和假,常常作为判断条件。布尔类型变量可以当做整型参与运算,将其看作整型时,True转换为1,False转换为0。将布尔型常量转换为字符串时,True转换为"True",False转换为"False"。