Python支持对整数和浮点数直接进行四则混合运算,运算规则和数学上的四则运算规则完全一致。
基本的运算:
![00d100216f2a6261f1f9c0486e409069.png](https://i-blog.csdnimg.cn/blog_migrate/ba50f68b7692896743e103075f08da1c.jpeg)
使用括号可以提升优先级,这和数学运算完全一致,注意只能使用小括号,但是括号可以嵌套很多层:
![7630ff84e24b681b4759c0d07eaec8e6.png](https://i-blog.csdnimg.cn/blog_migrate/1ad943958a6a0ba675582b2363013187.jpeg)
和数学运算不同的地方是,Python的整数运算结果仍然是整数,浮点数运算结果仍然是浮点数,请看下图:
![8ad2244f5a23db790947ff965b6746c4.png](https://i-blog.csdnimg.cn/blog_migrate/9244e92f9bc97690090dc1015f1a6265.jpeg)
但是整数和浮点数混合运算的结果就变成浮点数了:
![95596fd3a934e40c7c520f8327c34d89.png](https://i-blog.csdnimg.cn/blog_migrate/63e5ab67f61a47a969963347d4b05e3e.jpeg)
为什么要区分整数运算和浮点数运算呢?这是因为整数运算的结果永远是精确的,而浮点数运算的结果不一定精确,因为计算机内存再大,也无法精确表示出无限循环小数,比如 0.1 换成二进制表示就是无限循环小数。
那整数的除法运算遇到除不尽的时候,结果难道不是浮点数吗?我们来试一下:
![ba6353caa47114735707e2c6c1d31c02.png](https://i-blog.csdnimg.cn/blog_migrate/3da4f82e39b19b1f4ab3db4a2a92d3e9.jpeg)
对于上述的结果,一是注意python2.6和python3的区别,在就是向上取整和向下取整(后面都会讲到)
解释:
在Python 2.6中,'/'执行传统除法,如果操作数都是整数的话,执行截断的整数除法(即对于结果只保留整数部分),否则,执行浮点除法(保留余数);'//'执行Floor除法,与Python3.0一样,对于整数执行截断除法,浮点数执行浮点除法。
在Python 3.0中,'/'总是执行真除法,不管操作数的类型,都会返回包含任何余数的浮点结果;'//'执行Floor除法,截除掉余数并且针对整数操作数返回一个整数,如果有任何一个操作数是浮点数,则返回一个浮点数。
Python提供了一个求余的运算 % 可以计算余数:
![8b2b95e4e640a7c96397fc9a3473c3aa.png](https://i-blog.csdnimg.cn/blog_migrate/c8dd69a999fc565718e36de5905c4833.jpeg)
如果我们要计算 11 / 4 的精确结果,按照"整数和浮点数混合运算的结果是浮点数"的法则,把两个数中的一个变成浮点数再运算就没问题了:
![1f4d51b38fd04b1a16ed40acc9914871.png](https://i-blog.csdnimg.cn/blog_migrate/8a5208b7cf7f3c0e02ff8adc564de16b.jpeg)
试一试:
请计算 2.5 + 10 / 4 ,并解释计算结果为什么不是期望的 5.0 ?
请修复上述运算,使得计算结果是 5.0