只是用两种方式计算了相同的数字,但是在numpy中,它会出错
[[ 0.910221324013388510820732335560023784637451171875]]
[[-0.9102213240133882887761274105287156999111175537109375]]
这个数字与e ^( – 15)相同,但后来有所不同.我该如何处理这个错误?
有没有办法限制浮点精度?
由于我使用这些数字计算指数,即使很小的差异也会导致令人沮丧的错误……
您是否关心结果的实际精度,或者从两次计算中得到完全相同的数字?
如果您只想要相同的数字,可以使用np.around()将结果四舍五入到一些适当的小数位数.但是,通过这样做,您只会降低结果的精度.
如果您确实想要更精确地计算结果,可以尝试使用np.longdouble类型作为输入数组,depending on your architecture and compiler可能会为您提供80位或128位浮点表示,而不是标准的64位np.double *.
您可以使用np.finfo比较精确的小数位数:
print np.finfo(np.double).precision
# 15
print np.finfo(np.longdouble).precision
# 18
请注意,并非所有numpy函数都支持long double – 有些将向下转换为double.
*但是,一些编译器(如Microsoft Visual C)总是将long double视为double的同义词,在这种情况下,np.longdouble和np.double之间的精度没有差别.
|