我对浮点数和四舍五入有一些问题。在
我有一个函数,它以字典作为输入。它找到所有值的平均值,然后计算每个值与平均值之间的差。答案应四舍五入到小数点后两位。在
我不明白为什么它不返回正确舍入的浮点值。有趣的是,当我在for循环中打印出x[i]
时,它看起来正是我想要的。另外,我希望将值保留为数字,而不是带格式的字符串。在
def avgstuff(x):
ppv = sum(x.values())/float(len(x))
for i in x:
x[i] = round(x[i] - ppv,2)
return x
print avgstuff({'A': 40, 'C': 10, 'B': 25, 'E': 58, 'D': 153})
电流输出:{'A': -17.199999999999999, 'C': -47.200000000000003, 'B': -32.200000000000003, 'E': 0.80000000000000004, 'D': 95.799999999999997}
我想要的输出:{'A': -17.20, 'C': -47.20, 'B': -32.20, 'E': 0.80, 'D': 95.80}
我不想要的输出:{'A': '-17.20', 'C': '-47.20', 'B': '-32.20', 'E': '0.80', 'D': '95.80'}
使用
Decimal
库:有关详细信息,请参见https://docs.python.org/2/library/decimal.html
如果要返回浮点而不是十进制对象,请使用循环中的行:
^{pr2}$这里的问题是某些实数(例如0.2)不能完全转换为二进制。你需要无限量的比特。在
0.2*2=0余数0.4
0.4*2=0余数0.8
0.8*2=1余数0.6
0.6*2=1余数0.2
从这里开始一切都会重新开始。。。在
=>;(0.2)_dec=(0.001100110011…)
相关问题 更多 >
编程相关推荐