以下是我的代码:
#!/usr/bin/python
res = {u'salary': 28.86823689842918, u'name': u'john'}
result = {}
score_list = []
result.update(res)
if result[u'name'] == 'john':
score_list.append(result[u'salary'])
print score_list[0]
打印的预期结果是 28.86823689842918 但我得到28.8682368984。你知道吗
你能帮我得到原值而不被截断吗。你知道吗
一种解决方案是使用
repr
:重要的一点是,28.86823689842918在Python中不是十进制值:它是(生成)具有32位精度的二进制浮点值。它没有足够的精度来记住所有的小数。你知道吗
最重要的是:a)你到底是怎么得到这个数字的(这是某种计算的结果吗?我非常怀疑有人有那么精确的薪水;),和b)你打算用它做什么(只是打印出来?用它来计算?…)根据这些问题的答案,我可以推荐最好的方法。你知道吗
例如,如果您只想打印它,“28.86823689842918”就足够了。如果你打算用它来做14位精度的计算,28.8682368984就足够了。如果你想让它表现得像一个“学校”的十进制数,十进制('28.86823689842918')就足够了。你知道吗
如果它是某个计算的结果,也许真正的表现是记住计算本身,而不是它的结果。等等。你知道吗
相关问题 更多 >
编程相关推荐