我们知道地球自转一圈为1天,地球围绕太阳公转一圈为1年。那1年到底等于多少天哪?答案是:1年=365天5小时48分46秒,即 365.242199[074] 天(注:用[xxx]表示无限循环)

因此,4年 = 4*365.242199[074] = 4*365 + 0.9687[962] 天
显然,每隔4年,就要多出了将近1天,因此公元历法就定义㈠:每4年加一天,即闰年(366天)
那么,也就是说4年就多算了:1-0.9687[962] = 0.0312[037]天

        照这样算下去,100年中有25次闰年,那么就会多计算了 25*0.0312[037]=0.7800[925] 天,这又太接近1天了,因此公元历法就定义㈡:每100年的那年不算闰年
于是:
    100年中就又会少算 1-0.7800[925]=0.2199[074] 天
    200年会少算 2*0.2199[074] = 0.439[814] 天
    300年会少算 3*0.2199[074] = 0.6597[2] 天
    400年会少算 4*0.2199[074] = 0.87[962] 天

停!400年后的误差又接近1天了,于是公元历法进行修正㈢:400年的那年(虽然是100年的倍数),但又算闰年啦。于是,400年的时候,由于多算了一次闰年,那么,
每隔400年就会多算:1-0.87[962] = 0.12[037] 天

        显然,等到4000年的时候(那时,看到这个帖子的人都死了2000年了),误差又到1天多了,也许那个时候公元历法有会进行修改 了“每4000年少一个闰年”。哈哈,反正不管我们的事了。但也不尽然,因为地球的自转很不稳定,但总的趋势是每年要慢一丁点(大家是否还记得今年 2006年元旦,全世界的人都要把表拨慢1秒钟?)由于阴差阳错,也许4000年后并不需要少算一个闰年也不一定呐。总结一下闰年的算法:
㈠ 每4年一闰        ㈡ 每100年的那年不闰        ㈢ 每400年的那年又闰
真罗嗦,用咱们IT人的话说,就是能被4整除但不能被100整除,可是却能被400整除的年是闰年

#define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0))

創作者介紹

邱小新の工作筆記

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()