我正在尝试使用Python 2.7计算错误函数,它有一个术语:
...
sumNSSD = float()
sumNSSD = sumFiGi/sumGi2
return sumNSSD
sumFiGi
和sumGi2
类型为int()
,sumFiGi/sumGi2
的结果为0到1之间,比方说3/4
当代码评估3/4时,由于截断而返回0,sumNSSD
再次变为int()
。当我尝试sumNSSD = float(sumFiGi/sumGi2)
时,它仍会截断并返回0.0
有效的解决方案是键入sumNSSD = float(sumFiGi) / float(sumGi2)
,但实际的等式要长得多,将每个术语放在float(...)
应该有一种明显的方法来绕过截断,但是,我确实搜索了很多主题,但没有问题可以解决我的问题。
使用 Decimal()
产生相同的结果,因为它首先评估parantheses之间的内容,然后截断并返回0
即便是Python文档也是这样;
>>> from decimal import * >>> getcontext().prec = 6 >>> Decimal(1) / Decimal(7) Decimal('0.142857')
除了将每个字词放入Decimal(...)
或float(...)