如何将小数分解为年数和天数?

时间:2012-02-27 05:31:14

标签: python

我是初学程序员,到目前为止我的程序是这样的:

    def getYearsandDays():  
        c = eval(input("Enter a number: "))  
        d = c // 1  
        e = (c - d) * 365  
        f = e // 1  
        return f,d  
        print(d , "years and", f, "days")  

    ()  

例如,假设c是1.34。将其转换为整数可以得到1年= d。现在1.34 - 1给你.34。乘以356得到124.1 = e。使这个整数给你124天= f。所以1。34年是1年(d)和124天(f)。

我已经知道我的打印功能是错误的,因为我不知道如何获得这样的输出:

6 years and 1 day  
1 year and 137 days  
67 days  

而不是:

6 years and 1 days  
1 years and 137 days  
0 years and 67 days  

我猜我可能必须将我的整数转换回字符串并制作If-Then语句,但我不是百分百肯定。

2 个答案:

答案 0 :(得分:4)

这就是我要做的事情:

def years_and_days():
    # Use input instead of raw_input if you're using Python 3.x
    time = float(raw_input('Enter a number: '))
    years = int(time)
    days = int((time - int(time)) * 365)
    if years:
        print years, 'years' if years > 1 else 'year',
    if days:
        print days, 'days' if days > 1 else 'day'

用法:

>>> years_and_days()
Enter a number: 3
3 years
>>> years_and_days()
Enter a number: 1.34
1 year 124 days
>>> years_and_days()
Enter a number: 0.32
116 days

答案 1 :(得分:0)

如果c是您的输入: 你可以做c MOD 1 ...那会给你小数 要获得整数,您只需要c-cmod1 ...其余的计算应该可以...

mod是模数的缩写 - 这基本上是计算某些东西的剩余部分的方法。所以5mod2是5/2或1的余数。

不确定您使用的是哪种语言,但如果您在Google中搜索模数和语言名称,您将能够找到您要查找的内容。

希望有所帮助

def getYearsandDays():  
        c = eval(input("Enter a number: "))  
        d = c - c%1 //years
        e = (c -d) * 365  //days in decimal format
        f = e - e%1 // days in integer format...you probably would get away with just rounding here too... 
        return f,d  
        print(d , "years and", f, "days")  

    ()