2017-04-11 16 views
2

に戻り、以下の機能を小数の変換:あなたの毎月の支払いは6.25年のための$ 529.22、および$ 4620.06の頭金だろう。Pythonの:ヶ月

私は小数点を0.25年の代わりに4か月に変換できますか。

私は、出力が読みたい:あなたの毎月の支払いは、6年と4ヶ月で$ 529.22、および$ 4620.06の頭金だろう。

あなたは月に12 *年は整数に変換し、小数部分を変換することができ
def newcar(): 

input("How much is a new car going to cost you per month? Please hit 
enter to start") 
p = int(input("Please enter total cost of car: ")) 
r = float(input("Please enter interest rate as a whole number(example: 
15.6% = 15.6): National average is around 10.5%): ")) 
t = int(input("These payments would last for how many months?: ")) 
dp = int(input("Please enter the downpayment percentage as a whole 
number: example: 20% = 20: ")) 
afterdp = p - (p * dp/100) 
downpay = p - afterdp 
downpay = round(downpay, 2) 
interest = afterdp * (r/100) * (t/12) 
interest = round(interest, 2) 
monthly_payment_bt = (afterdp + interest)/t 
monthly_payment_bt = round(monthly_payment_bt, 2) 
monthly_payment = (monthly_payment_bt * .07) + monthly_payment_bt 
monthly_payment = round(monthly_payment, 2) 
t = round(t/12, 2) 
return("Your monthly payment would be $" + str(monthly_payment) + " 
for " + str(t) + " years, and a downpayment of $" + str(downpay)) 

print(newcar()) 
+4

はちょうど私があなたが興味を計算していないかなり確信している、 'それ...ところで、1年の25%が3ヶ月に等しい)' 0.25 * 12'と( 'ラウンドを行いません4. –

+1

正しく通常、利息は毎月複利となるため、すでに支払った部分には利息を支払わない(ただし、前回の利子に対して利息を支払う)。私は[この数式](https://en.wikipedia.org/wiki/Mortgage_calculator#Monthly_payment_formula)を使用して、整数の月(分数ではなく)で計算することをお勧めします。 – Blckknght

答えて

3

def singular_or_plural(count, word): 
    if count == 1: 
     return "1 %s" % word 
    elif count > 1: 
     return "%d %ss" % (count, word) 


def years_and_months(float_year): 
    year = int(float_year) 
    month = int((float_year % 1) * 12) 
    words = [(year, 'year'), (month, 'month')] 
    return ' and '.join(singular_or_plural(count, word) 
         for (count, word) in words if count > 0) 

print(years_and_months(0.09)) 
print(years_and_months(0.50)) 
print(years_and_months(1)) 
print(years_and_months(2)) 
print(years_and_months(2.5)) 
print(years_and_months(2.99)) 
print(years_and_months(6.25)) 

それは出力:

1 month 
6 months 
1 year 
2 years 
2 years and 6 months 
2 years and 11 months 
6 years and 3 months 

このfonctionを呼び出す前に、あなたは可能性があり期間が少なくとも1ヶ月であることを確認してください。