类型
整型 int
python3 没有长整型、短整型,取值范围是无穷。
二进制表示(0b 开头),八进制表示(0o 开头),十六进制(0x 开头)
内置函数 int():将一个数字或字符串转换成整型,直接舍弃小数部分
浮点型 float
浮点型虽然叫 float,但是类似与 Java 的 double,占 8 个字节
内置函数 float():将整型或字符串转成浮点型
复数 complex
1+1j 这种,好久不见了,估计用不到了
小数 decimal.Decimal (非内置类型)
浮点型在计算时是缺乏精确性的,比如下面这种
# 这是一个无限循环函数,因为 i 永远不可能等于 1.0
i=0.1
while i!=1.0: # 正确的做法是这里改为 i<=1.0
print(i)
i+=0.1
Decimal 就是为了解决这一个问题
from decimal import Decimal
a = Decimal('0.1') + Decimal('1.01')
# 输出结果为True
print(a == Decimal('1.11'))
Decimal 也可以用数字来初始化Decimal(0.1)
,但这样计算结果会和浮点型一样不精确
除非提前设置全局精度decimal.getcontext().prec = 4
,保留小数点后4位
临时精度,在下面 with 语句中,保留小数点后 2 位,出了 with 语句就使用全局精度
with decimal.localcontext() as ctx:
ctx.prec = 2
pass
分数 fractions.Fraction (非内置类型)
# a的值是1/2
a = Franction(1,2)
算术运算
加减乘除同 java,没有自加自减操作符,但是有 += 这种
%:取模,即返回余数,同 java,因为不熟,所以单独写出来
:幂运算,且优先级较高,比如2*2**3
的结果是 16
//:floor 除法,向下取整**,也叫整除法
位运算
print 函数会把数字都转成十进制的形式输出,如果要查看数字的其他进制的表示,可以用 bin、oct、hex 把 int 转成 2、8、10进制的字符串
2、8、10 进制的表示形式分别为:0b、0o、0x;如果要表示负数,则是 -0b 这种形式
二进制运算符:&、|、~、^(异或)、<<、>>
位运算(除了左移右移外)包括符号位,正数取反会变成负数
a<<n
:等效于a*2**n
a>>n
:等效于a//2**n
【按位移】操作的是补码,所以就不要纠结负数的位移结果了,正数的话,左移右移都是补零,左移不会有舍弃,所以数值会越来越大,右移会有舍弃
网友评论