我正在尝试开发一个简单的程序,它可以找到十进制数等于其位数的平均值。例4.5(4+5=9/2)=4.5
为了做到这一点,我需要取有几个小数点的平均值,并将它们与一个大的十进制数迭代列表进行比较(我使用了一个嵌套循环来实现这一点)。在
当我使用十进制库进行简单除法时,得到的结果是四个小数点,就像我想要的:0.2727
但当我试图打印循环的平均值时。(十进制(i+y+z+q))/十进制(4))平均值仅为小数点的百分之一百(0.25 0.5 0.75等)。为什么?在传递到Decimal()之前,我尝试过转换为str()和int(),但它不起作用。在
from decimal import *
getcontext().prec = 4
print(Decimal(3)/Decimal(9))
numbers1to10 = [0,1,2,3,4,5,6,7,8,9]
for i in numbers1to10:
for y in numbers1to10:
for z in numbers1to10:
for q in numbers1to10:
if: (Decimal(i + y + z + q)) / Decimal(4)) == ((Decimal(i))+ (Decimal(y)/10) + (Decimal(z)/100)+ (Decimal(q)/1000)):
print (((Decimal(i))+ (Decimal(y)/10) + (Decimal(z)/100) + (Decimal(q)/1000)))
0.5
尽可能精确。如果要在打印期间确保固定宽度,请使用string formattingFormatted String Literals (new in version 3.6)
不能肯定,但这些数字(0.25 0.5 0.75)在我看来很“圆”,我的意思是它们只有1/4、2/4和3/4,而且它们没有任何其他小数。那么你只到第一百次就很正常了。0.5等于0.5,不需要显示0.5000。在
如果您真的想显示4位小数,并在末尾附加0,请使用format函数。在
示例:
显示
0.5000
。在相关问题 更多 >
编程相关推荐