直接放代码,本人是新手自学点皮毛,高手别见怪,顺便问一下为什么,1.51-1.3不等于0.21而需要Decimal才能显示出正确值呢:
li = [1.23, 1.25, 1.3, 1.59, 1.52, 1.50, 1.7, 1.33, 1.22, 1.22, 1.9, 1.2]
defaultnumber = 1.51
select = Decimal(str(defaultnumber)) - Decimal(str(li[0]))
index = 0
for i in range(1, len(li) - 1):
select2 = Decimal(str(defaultnumber)) - Decimal(str(li[i]))
if (abs(select) > abs(select2)):
select = select2
index = i
# select = min(select, abs(select2))
print('结果', li[index], select)
整理的出方法:
def index_number(li,defaultnumber):
select = Decimal(str(defaultnumber)) - Decimal(str(li[0]))
index = 0
for i in range(1, len(li) - 1):
select2 = Decimal(str(defaultnumber)) - Decimal(str(li[i]))
if (abs(select) > abs(select2)):
select = select2
index = i
return li[index]
顺便问一下为什么
print(Decimal(1.5)-Decimal(1.3))
print(float(1.5) - float(1.3))
print(int(1.5) - int(1.3))
print(Decimal('1.5') - Decimal('1.3'))
print(Decimal(str(1.5)) - Decimal(str(1.3)))
得出的结果是:
0.1999999999999999555910790150
0.19999999999999996
0
0.2
0.2
这是什么原因呢?求高手解答一下。谢谢