栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > 资讯 > 高等教育

Python入门教程05——一文说清楚Python中的数字

Python入门教程05——一文说清楚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次方 12676506002282294014967032053769**100 '''9的100次方,数很大,结果为:18299438469904400126561398887587476933878132203577962682923345265339495974574961739092490901302'''
浮点数类型

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

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

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

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

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

# 计算结果并不是1.0 是 0.999999999999999print(0.3+0.3+0.3+0.1) # 计算结果并不是0 是 -2.7755575615628914e-17print(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.0d = Decimal('0.3') - Decimal('0.1') - Decimal('0.1') - Decimal('0.1')print(d) # 0.0print(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
分数类型

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

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

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

Fraction.from_float(1.25)   # 5/4
布尔类型

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/news/1006298.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号