如何使python输出一个重复小数点的更多小数位?

时间:2019-07-07 08:13:16

标签: python

```python
import decimal
x=[]
#functions etc. x is changed
#now returns is a list full of integers
print(sum(x)/len(x))
#This happens to give 0.6999
print(decimal.Decimal(sum(x)/len(x))
# This happens to give 0.6998999999996034 blah blah blah
```

十进制模块给出的小数位数过多,而舍入(decimal.Decimal(x),5)得出0.69990

我希望它输出0.69999(5 d.p.),但输出0.6999或0.69990

3 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情

x=0.6999932
g = float("{0:.5f}".format(x))
print(g)

#output be like
0.69999

答案 1 :(得分:1)

您已经有了正确的答案:round(decimal.Decimal(x),5)给出了0.69990。在您的情况下,您不应期望0.69999,甚至还不接近0.699899999999。 python内置函数round很好用,但有时可能令人惊讶,请参阅更多详细信息here

总结:

import decimal
x=0.699899999
print("x =", x)
g = round(decimal.Decimal(x),5)
print("rounded:", g)

输出:

x = 0.699899999
rounded: 0.69990

答案 2 :(得分:0)

在数学上,数字0.699899999999...0.6999000...等效,假设9的重复次数比我们想舍入前要重复的次数远。

这与为什么0.9999...等于1(对于这个问题您可以在网上找到许多解释,我很喜欢this one)的问题相同,只是转移了右边的小数点后几位。最后的所有9都变成了1。那个被添加到最后一个8并将其变成9。所有这些后面都跟着无限零,Python默认会忽略该零。