我在计算一个值的余弦值时得到的结果略有不同。我如何检查这种差异是否在机器精度范围内?
import math
math.cos(60.0/180.0*math.pi)
-> 0.5000000000000001
import numpy
numpy.cos(60.0/180.0*numpy.pi)
-> 0.50000000000000011
最佳答案
差异似乎仅由格式化例程引起:
>>> '%.30f' % math.cos(60./180.*math.pi)
'0.500000000000000111022302462516'
>>> '%.30f' % np.cos(60./180.*np.pi)
'0.500000000000000111022302462516'
请注意,np.cos
返回 np.float64
而不是 float
,显然默认情况下打印的类型不同。在普通硬件上,它们都实现为 64 位 double
,因此在精度上没有实际差异。
关于python数学,numpy模块不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7825543/