加、减、乘、除
>>> 1+2
3
>>> 2-1
1
>>> 1*2
2
>>> 1/2
0
>>> 1/2.0
0.5
有问题的地方:
>>> 10.0/3
3.3333333333333335
>>> 0.1 + 0.2
0.30000000000000004
>>> 0.1 + 0.2 - 0.2
0.10000000000000003
>>> 0.1 + 0.2 - 0.3
5.551115123125783e-17
我们输入的是十进制,计算机要把十进制的数转化为二进制,然后再计算。但是,在转化中,浮点数转化为二进制,转化为二进制后,不会精确等于十进制的0.1。同时,计算机存储的位数是有限制的,所以,就出现上述现象了。对于需要非常精确的情况,可以使用 decimal
模块,它实现的十进制运算适合会计方面的应用和高精度要求的应用。
余数
>>> 5%2
1
>>> 5%2.0
1.0
可以使用内建函数divmod()
来返回商和余数
>>> divmod(5,2) #表示5除以2,返回商和余数
(2, 1)
>>> divmod(5,3)
(1, 2)
>>> divmod(5,2.0)
(2.0, 1.0)
四舍五入
使用内建函数round()
来实现
>>> round(1.2345,2)
1.23
>>> round(1.2345,3) #有问题,应该是1.235,归根到底还是浮点数中的十进制转化为二进制惹的祸。
1.234
math模块
导入模块
>>> import math
>>> math.pi
3.141592653589793
>>> dir(math) # 查看模块中包含的工具
['__doc__', '__name__', '__package__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'hypot', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']
>>> help(math.pow) #查看每个函数的使用说明
常用的几个math函数:
>>> math.sqrt(9)
3.0
>>> math.floor(3.14)
3.0
>>> math.floor(3.92)
3.0
>>> math.fabs(-2) #等价于abs(-2)
2.0
>>> abs(-2)
2
>>> math.fmod(5,3) #等价于5%3
2.0
>>> 5%3
2