Python中的数字

Python 3整数无大小限制,可以无穷大。浮点数:小数点前后无数字自动填充0。复数用j或J表示,带有括号。j可以用来做变量的,虚部表示必须在j前加数字,否则视为变量j。

除法:/,//,在Python 3中/为真除法,不管操作数类型都返回包含任何余数的浮点结果,//为floor除法,操作数为整数返回整数,操作数有一个为浮点数返回浮点数。例如:

res = 4 / 2 # 结果为2.0

res = 5 / 2 # 结果为2

res = 5 / -2 # 结果为-3,使用import math,math.floor(-2.5)为-3,math.trunc(-2.5)为-2,第一个为不超过参数的整数,第二个为截断处理。

进制表示:普通数字表示十进制;0x开头的数字表示十六进制(hex);0o开头的表示八进制(octonary);0b开头的表示二进制(binary)的数。

hex(64)、oct(64)、bin(64)分别表示将64转为对应进制的数的字符串(字符串会在前面加上0x,0o和0b)。int(‘40’,16)或int(‘0x40’,16)按16进制将字符串40转为整数。字符串格式化:’{0:x},{1:o},{2:b},{3:X}’.format(127,64,64,255)结果为7f,100,1000000,FF(注意大小写),’%x,%o,%X’ % (127,64,255)结果为7f,100,FF(这里%b不能进行二进制格式化)。

整数int类型的函数bit_length可以查看二进制长度。

数字不能以0开头,除非后面跟非十进制的表示形式。

Python自带的数字计算函数:pow(2,3)计算2的3次方;abs(-4.2)计算绝对值;sum((1,2,3))计算序列的和;min/max(1,2,3)求参数中的最大和最小值等。

math模块的函数比较丰富。例如import math后,math.sqrt(144)开平方根返回浮点数。math.pi表示圆周率常数,math.e表示自然常数。

其他数字类型:

A. 小数:浮点数学缺乏精确性,因为用来存储数值的空间有限。导入模块decimal后可以使用小数(不同于浮点数,浮点数属于内置的数据类型)。fromdecimal import Decimal。Decimal(‘0.1’) + Decimal(‘0.10’)返回Decimal(‘0.20’)。另外import decimal后,可以设置全局精度,使用decimal.getcontext().prec = 4表示保留4位小数,此时decimal.Decimal(1)/ decimal.Decimal(7)的结果为0.1429。

Decimal和int运算自动转为Decimal,不能和float运算。

B. 分数:同样用于解决浮点数缺乏精确性。需要导入模块fractions,例如:

from fractionsimport Fraction

x = Fraction(1,3) # 查看x的值返回Fraction(1, 3)。

y = Fraction(4,6) # 查看y的值返回Fraction(2, 3),print(y)返回2/3。

创建后可以用于正常数据表达式计算,例如:

x + y # 返回Fraction(1, 1)。

x - y # 返回Fraction(-1, 3)。

也可以从浮点数创建分数,这和小数类似。例如:Fraction(‘.25’)为Fraction(1, 4),Fraction.from_float(1.75)为Fraction(7, 4),(2.5).as_integer_ratio()为(5, 2),Fraction(*(2.5).as_integer_ratio())为Fraction(5, 2)。其中*表示函数参数的一种方式。

Fraction和float运算自动转为float,和int运算自动转为Fraction。

C. 集合:set,集合虽然放在数字类型因为其和数学关系密切,实际上其项可以是任何不可变的对象类型的(列表和字典不可以是集合的项,元祖可以,集合本身是可变的所以也不能作为集合的项,但是可以使用frozenset函数创建不可变的集合,这样就可以作集合的项了)。一个项只能重现一次,不论添加了多少次。集合是无序的。

集合解析:和列表解析类似,例如:

{x ** 2 for x in[1,2,3,4]} # 返回{16, 1, 4,9},因为集合无顺序。

D. 布尔型:bool,值为True和False,这两个值可以理解成预先定义好的两个bool类型的实例一样,他们的行为和整数的1和0是一样的,只不过他们有特定的显示逻辑(bool为这两个值重新定义了str和repr的字符串格式)。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值