python3.x,anaconda,spyder
decimal
12赋值给a,使用函数type()可以查看a的数据类型为int;使用bit_length()方法可以发现a的位数是4,将a重新赋值为12345,发现a的位数变为14。如图所示
python的整数可以任意大(也就是说基本上不用担心计算机位数不够导致无法显示的情况)。例如,计算123456789的8次方,然后用bit_length()方法查看下位数,发现竟然有216位(二进制),如图
整数的加减乘除和求余运算。分别计算2和6的加减乘除和求余,同时用type()函数查看数据类型,(发现2/6结果是float,其余都是int),如图所示
浮点数的加法。例如0.55+0.3显示结果为0.8501,并不是我们想象中的0.85,这是因为浮点数内部是二进制表示,在形式上是一个无限系列。如图
浮点数运算方法探秘。首先使用as_integer_ratio()方法查看浮点数的分数表示形式。例如,0.25可以表示为1/4,是因为可以用有限的二进制表示出来,从而显示为(1,4);而0.55实际上是11/20,是不能用有限的二进制表示出来的,从而显示为(2476979795053773,4596),并不是11和20,所以出现了所看并非所想的情况,如图
使用decimal模块可以完成浮点数任意精确度的要求。decimal.getcontext()可以查看decimal模块的各种参数,其中prec为精确度的位数,分别使用默认的28,和修改后的6、66对比一下Decimal(1)/Decimal(11)的结果差异,最终进行求和,如图所示
使用decimal模块对0.55+0.3的精确度修改,为使其得到精确的结果(所看即所想),要求参数prec=2,发现结果与我们期望一致了。如图
py2和py3的整数除法运算不一样,使用的时候一定要区分是2还是3
浮点数运算结果会因为精度不同稍有差异,如果计算过程对精度有较高要求,请使用decimal模块
检查一个浮点数是否是精确的,可以用as_integer_ratio方法查看分数表示形式
python对大小写敏感,使用时要注意