python中math.cos(math.pi/2)值不是0而sin的是1

如题所述

上面的表达式最好写成 下面的方式,其中15是精度要求。

round(math.cos(math.pi/2),15)

浮点数需要对计算精度做限制,类似的情况还有:

>>> .1 + .1 + .1 == .3
False

Python 文档的The Python Tutorial 中 14. Floating Point Arithmetic: Issues and Limitations

对浮点数运算有比较详细的介绍。

The Python Tutorial这章最好通读,对理解Python语言很有帮助。

追问

为什么不是零……

追答

根本原因是计算机时二进制,十进制浮点数变二进制时会有除不尽的情况,然后变回来必然出现舍位

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答