以下是我的代码:
#!/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。
可以帮助我获取原始值而不会被截断。
答案 0 :(得分:0)
一种解决方案是使用repr
:
print repr(score_list[0])
答案 1 :(得分:0)
重要的一点是28.86823689842918不是Python中的十进制值:它是(生成)具有32位精度的二进制浮点值。它没有足够的精度来记住所有这些小数。
最重要的事情是:a)你是如何获得这个数字的(这是一些计算的结果?我非常怀疑某人有一个精确的薪水;),以及b)你打算用它做什么? (只需打印出来?用它计算?...)根据这些问题的答案,我将能够推荐最好的方法。
例如,如果您只想打印它,' 28.86823689842918'够好了。如果你打算用大约14位数的精度进行计算,那么28.8682368984就足够了。如果你打算把它作为一个学校"十进制数,十进制(' 28.86823689842918')就足够了。
如果是某些计算的结果,也许真正的表示是记住计算本身,而不是结果。等等。