python 的加减乘除余
2018-10-16 本文已影响0人
tafanfly
加法
In [8]: 1+2
Out[8]: 3
In [9]: 1+2.0
Out[9]: 3.0
In [10]: 1.0+3.0
Out[10]: 4.0
减法
In [11]: 2-1
Out[11]: 1
In [12]: 2.0-1
Out[12]: 1.0
In [13]: 2-1.0
Out[13]: 1.0
乘法
In [14]: 1*2
Out[14]: 2
In [15]: 1*2.0
Out[15]: 2.0
In [16]: 1.0*2
Out[16]: 2.0
除法
- 整数除以整数,结果是整数(舍掉余数)
In [20]: 3/2
Out[20]: 1
In [21]: 3.0/2
Out[21]: 1.5
In [22]: 3/2.0
Out[22]: 1.5
In [23]: 3.0/2.0
Out[23]: 1.5
- 不管是被除数还是除数,只要有一个数是浮点数,结果就是浮点数
In [24]: 2/3
Out[24]: 0
In [25]: 2.0/3
Out[25]: 0.6666666666666666
In [26]: 2/3.0
Out[26]: 0.6666666666666666
In [27]: 2.0/3.0
Out[27]: 0.6666666666666666
- 使用数学模块计算,符合平常的算术逻辑
In [36]: from __future__ import division
In [37]: 2/3
Out[37]: 0.6666666666666666
In [38]: 2.0/3
Out[38]: 0.6666666666666666
In [39]: 3/2
Out[39]: 1.5
In [40]: 3.0/2
Out[40]: 1.5
- 出现奇怪的一幕, 简单的算式出现了奇怪的结果。原因在于计算机是通过二进制计算的, 输入的十进制数值0.1需要转化为二进制。但是在转换的过程中就有问题了,不能精准的转换。
如0.1 , 为0.0001100110011001100110011001100110011001100110011...
这个也不是python 的问题,二是受限于计算机不能存储能力有限的。解决方案,一是四舍五入,结果还是准确的,二是使用第三方模块,提高精准度
In [33]: 0.1+0.2
Out[33]: 0.30000000000000004
In [34]: 0.1+0.1+0.1-0.3
Out[34]: 5.551115123125783e-17
余数
In [2]: 1%2
Out[2]: 1
In [3]: 1.0%2
Out[3]: 1.0
In [4]: 3%2
Out[4]: 1
In [5]: 3%2.0
Out[5]: 1.0