1、在python3的版本中,整数不区分整形和长整型,并且python中的整数有无穷精度,例如
>>> 3 ** 100 515377520732011331036461129765621272702107522001
即使是计算3**10000
,3**1000000
,python也不会报错,但计算的时间会更长
2、当整数与浮点数同时参与表达式的运算时,所得到的结果类型一定是浮点数,整数与整数之间做/
运算时所得结果也一定是浮点数
3、整数除了10进制之外还有二进制、八进制、十六进制等其他进制表示
0b
或0B
开头,其后值都为0~1
的数值表示是二进制整数0o
或0O
开头,其后值都为0~7
的数值表示是八进制整数0x
或0X
开头,其后值都为0~9
/a~f
/A~F
的值或表示是十六进制整数由于硬件的原因,使得计算机对于浮点数的处理总是不精确的。在python中不建议直接将两个浮点数进行大小比较,或者做精确的计算,因为得到的结果往往出人意料。
>>> 3,4-2.2 (3, 1.7999999999999998)
如果确实需要将两个浮点数进行比较时,可以用一个足够小的值和两个浮点数之间差的绝对值进行不等比较
>>> (3.2-2.8) == 0.4 False >>> abs((3.2-2.8)-0.4) < 0.0002 True
/
在python中,整数与整数之间做/
运算时所得结果也一定是浮点数
>>> 3 / 1 3.0 >>> -4 / 2 -2.0
//
在python中实现的是floor地板除法,它会去掉做除法运算得到结果的小数位,得到小于运算结果的最大整数。但如果参与运算的有小数,此时会返回浮点数
>>> 5 // 2 2 >>> 5.2 // 2 2.0 对于正数的运算结果,floor除法是直接去除小数位的。而对于负数结果,则是取比运算结果更小的负整数 >>> -5.2 // 2 -3.0 >>>
round(x, N)
是四舍五入,其中x
为四舍五入的对象,N
为精确到的小数点后面几位数,int类型
>>> round(2.456,1) 2.5 >>> round(2.456,2) 2.46 >>> round(2.0034,2) 2.0 >>> round(2.034,2) 2.03
Decimal()
是decimal模块下的一个函数,可以精确的指定小数位数
>>> 3.14 - 3.13 0.010000000000000231 # 得到的结果是一个无限接近0.01的值 >>> import decimal # 导入decimal包 >>> decimal.Decimal("3.14") - decimal.Decimal("3.13") Decimal('0.01')
值得注意的是Decimal的参数都是字符串,如果不使用字符串则仍会以原来的浮点数参与运算
>>> import decimal >>> decimal.Decimal(3.14) - decimal.Decimal(3.13) Decimal('0.01000000000000023092638912203')
计算结果的精度以参与计算数值的最长精度为准
>>> import decimal >>> decimal.Decimal("3.14")-decimal.Decimal("3.130000") Decimal('0.010000')
>>> float(3) 3.0
>>> int(2.6) 2
bin(24) -->'0b11000'
oct(24) -->'0o30'
hex(24) -->'0x18'
使用int()函数:int(x, base)
其中x
指代被转化对象,base
为该对象对应的进制
>>> int('0x18', 16) 24 >>> int('0o30', 8) 24 >>> int('0b11000', 2) 24
先将待转化对象转为十进制,再由十进制转为目标进制
>>> bin(int('0x18', 16)) '0b11000' # 由16进制转化为2进制
参考文章:
链接: Python数值类型 - 骏马金龙