簡體   English   中英

Python錯誤的乘法結果

[英]Python wrong multiplication results

def Calc_Salary(x,y):
    Pay = x*y
    return Pay
def Calc_with_bonus(c,d):
    bonus = c+d
    return bonus
hours = raw_input('Number of hours')
rate = raw_input('Rate per hour')
if hours >= 40:
    extras = ((float(hours)-40)*float(rate)*1.5)
    regular = float(rate)*40
    print Calc_with_bonus(extras,regular)
elif hours < 40:
    print Calc_Salary(hours,rate)
raw_input()

請幫忙,我已經看過很多次程序了,一切似乎都是正確的。 當小時數超過 40 時,它將計算超過 40 小時的獎金和長達 40 小時的常規費率,將它們相加並給出正確的結果。 但是,如果小時數少於 40,它所要做的就是調用Calc_Salary並乘以它所做的hours*rate ,但是例如,如果您輸入 hours=10*rate=10 而不是 100,它會計算 -50 請幫助:(

問題是,當您將hoursrate與整數40進行比較時,它們總是會更大,因此即使您輸入hours作為10 ,您最終也會進入if塊,並且它正在嘗試計算工資,就好像小時數大於 40。字符串總是大於 int 的示例 -

>>> '10' > 123123123
True

相反轉換號碼的float比較之后,你應該將它們轉換為你把輸入直接浮動。 例子 -

hours = float(raw_input('Number of hours'))
rate = float(raw_input('Rate per hour'))

在此之后,您無需在if塊中將hours / rate轉換為float

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM