网站建设网页设计小江,泉州网站建设价钱,收到网站打入0.1元怎么做分录,鄂伦春网站建设这里说明一下#xff1a;看到网上很多写python计算闰年的#xff0c;有很多是不同。
有份省级期刊万年历计算公元1-10000年的闰年 算法如下#xff1a;4000年停闰一次。区别其他算法#xff0c;有些是3200年停闰一次。
def division(dividend, divisor) - bool:看到网上很多写python计算闰年的有很多是不同。
有份省级期刊万年历计算公元1-10000年的闰年 算法如下4000年停闰一次。区别其他算法有些是3200年停闰一次。
def division(dividend, divisor) - bool::param dividend: 被除数:param divisor: 除数:return: boolif not isinstance(dividend, int):raise NotIntegerError(f被除数不是整数,dividend:{dividend})if not isinstance(divisor, int):raise NotIntegerError(f除数不是整数,divisor:{divisor})if divisor 0:raise DivisorZeroError(f除数不能为0,divisor:{divisor})return dividend % divisor 0def is_leap_year(year):功能计算是否为闰年:return:leap Falseif division(year, 4000):return Falseelif division(year,400):return Trueelif division(year,4) and not division(year,100):return Trueelse:return False之前看到问答上回答是也是思路正确的
我只是说根据现在的规则是没法判断一个大于3200年以上的年份是否是闰年。为什么呢地球围绕太阳的公转周期大概是365天5时48分46秒写成小数形式是365.2422天。写成小数点是因为人类闰是闰一天所以单位统一比较好算就不用小时分秒了。所有闰法都是为了使日历的周期和绕太阳公转的周期对应得上误差不超过一天不超过闰一天的校正范围。在没有闰四年的规则下每年会有0.2422天的误差累积五年就超过1所以会四年闰一次。但是1-0.2422*40.0312这种闰法校正过头又会引入新的误差每4年累积0.0312天。大概累积1/0.0312*4128.205128205年后又会达到最大校正范围。但是128这个数字显然不好记所以就取100每100年停闰一次就能缩小误差。但是新误差又来了停闰一年缩小误差同时又引入新误差这个误差是1-100/4*0.03120.22。也- 就是说每100年会累积0.22天。累积500年误差就会1所以400年的时候不能停闰了必须重新闰起来。解决了每百年累积的误差400年重闰又带来新误差这个误差是1-0.2240.12。按照这个算法那么当1/0.124003333.333333333年这个误差就会达到1。所以我们又必须停闰3200年必须停闰。故3200年是平年但是按照现在的规则3200年是闰年。
本质是回归年的问题
一种就是按照4000年停闰一种是按照3200年停闰
本质都在弥补误差。 实际是更精确的是 格里历现行公历的历年平均长度为365.2425日接近平均回归年的365.242199074日即约每3300年误差一日也更接近春分点回归年的365.24237日。