转换为float而不截断

时间:2015-03-11 00:21:30

标签: python floating-point truncate floating-point-conversion

我正在尝试使用Python 2.7计算错误函数,它有一个术语:

...
sumNSSD = float()
sumNSSD = sumFiGi/sumGi2
return sumNSSD 

sumFiGisumGi2类型为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(...)

之外,简单解决方案是什么

0 个答案:

没有答案