有人可以解释这是什么以及如何做的吗?

时间:2019-03-08 19:26:22

标签: python

我不明白为什么这样做了。

从自身中减去x如何仅将小数点留在浮点数中?

x = float(input("Enter a decimal"))

print (x - int(x))

3 个答案:

答案 0 :(得分:1)

int()在转换浮点数时会截断小数。

因此,如果您尝试一下,将会看到:

#sorting the checkouts list in date order.
for i in range(len(lst)-1):
        l=lst[i].find("2019")
        for j in range(i+1,len(lst)):
            if lst[i][l:] > lst[j][l:]:
                (lst[i],lst[j])=(lst[j],lst[i])
    return lst

#sorting the names.
def sortn(lst):
    for i in range(len(lst)-1):
        for j in range(i+1,len(lst)):
            if lst[i][8:] > lst[j][8:]:
                (lst[i],lst[j])=(lst[j],lst[i])
    return lst

#sorting the duplicates in date according to the question.
def check_dup(lst1,lst2,lst3):
    l=lst1[0].find("2019")
    for i in range(len(lst1)-1):
        for j in range(i+1,len(lst1)):

            #if dates are same then check names
            if lst1[i][l:]==lst1[j][l:]:
                for k in range(len(lst2)):
                    if lst2[k][:7]==lst1[i][:7]:
                        n1=k
                    if lst2[k][:7]==lst1[j][:7]:
                        n2=k

                if n1>n2:
                    (lst1[i],lst1[j])=(lst1[j],lst1[i])

            #if the names are also same then check
            if lst1[i][:8]==lst1[j][:8] and lst1[i][15:]==lst1[j][15:]:
                for k in range(len(lst3)):
                    if lst3[k][:7]==lst1[i][8:15]:
                        m1=k
                    elif lst3[k][:7]==lst1[j][8:15]:
                        m2=k
                if m1>m2:
                    (lst1[i],lst1[j])=(lst1[j],lst1[i])
    return lst1

s=input()
s=input()
Books=[]
while ( s != 'Borrowers' ) :
    Books.append( s )
s=input()

Books.sort()                                   

Borrowers=[]
s=input()
while ( s != 'Checkouts' ) :
Borrowers.append( s )
s=input()

Borrowers=sortn(Borrowers)
s=input()
checkouts=[]
while(s != 'EndOfInput'):
    checkouts.append(s)
    s=input()

checkouts=sortl(checkouts)

checkouts=check_dup(checkouts,Borrowers,Books)

#printing acc to question.
for i in checkouts:
    l=checkouts[0].find("2019")
    print(i[l:],end="~")
    for j in Borrowers:
        if i[:7]==j[:7]:
            print(j[8:],end="~")
            break

    for k in Books:
        if i[8:15]==k[:7]:
            print(k)
            break

如果为负数,它将保留符号:

 x = 3.5
 int(x)     --> 3.0
 x - int(x) --> 3.5 - 3.0 = 0.5

请注意,x%1将对正数产生相同的结果,但对负数不会产生相同的结果。

答案 1 :(得分:0)

在第一行中,您将x的输入值转换为浮点值:

x = float(input("Enter a decimal: "))

在第二行中,int(x)将浮点值转换为整数,并且您正在从x的整数值中减去浮点值:

print (x - int(x))

因此,如果x = 4.5,则int(x)将为4。因此,(x - int(x)) = (4.5 - 4) = 0.5。

>>> x = float(input("Enter a decimal: "))
Enter a decimal: 4.5
>>> int(x)
4
>>> print (x - int(x))
0.5
>>>

另一个例子:

>>> x = float(input("Enter a decimal: "))
Enter a decimal: 3.7
>>> int(x)
3
>>> print (x - int(x))
0.7000000000000002

如您在这些示例中所见,int()截断为0,如docs中所述。因此,4.5变为4,而3.7变为3。

答案 2 :(得分:0)

输入内容要求您输入一个数字,即5,该数字将转换为浮点数(5.0)。

然后您打印5.0-5,即0.0(浮点数减去整数表示浮点数)

如果输入带有十进制值的内容,则由于int(x)舍入到最后一个整数,因此将保留该十进制值。 int(5.9)给出5,所以您将得到5.9-5 = 0.9