一年的定义是一恒星年, 即地球绕着太阳转一圈,测下来365.2422****(无理数),但为了方便认为用365近似,但是这个误差在长久来看是巨大的
(请看黑板)假设人类向后发展了10w年(希望不会被外星人灭掉)
如果没有闰年,
误差为(365.2422 - 365)* 10w = 24220天
,差了66年多,相当于一个人在2019年,一个人在1953年
2. 如果设置每4年一个闰年,平均每年有 (365*3 + 366)/ 4 = 365.25天
误差为 (365.2422 - 365.25)* 10w = -780天
what? 怎么是负的,好吧,一下子减多了,不过貌似误差好了一些了,
780天前是什么时候,大概2年前多一点
3. 这时候要再优化了, 再规定闰年是4的倍数但不是100的倍数,比如2100就人为设置成非闰年
假设从101-200为一个样本,总共为100年, 其中闰年有24个,则平均每年有
(24*366+ 76*365)/ 100 = 365.24天
误差为(365.2422 - 365.24)*10w = 220天
又变成正的了,误差进一步缩小,也就是每10万年误差不到1年
4. 能被400整除,同理
假设从1-400为一个样本,总共400年,其中每一个100年的闰年有24个,则400年有96个,但是人为加了个公元400年,总共有97个闰年
则平均每年有 (97*366 + 303*365)/ 400 = 365.2425天
误差为 (365.2422 - 365.2425) * 10w = -30天
误差更小了,每10万年只差不到一个月
(黑板演示结束)
也就是说当前的算法,每10万年,会有30天的误差(其实这个误差已经非常小了,误差率0.00008219%)
当然,这个算法可以继续优化,比如规定每1000年,每4000年再有一个类似的递归算法,进一步可以把每十万年的误差降低到1天以内。
之前头晕了,写了一堆单位不对的东西.....
sorry!
现在修正了,大家看看有没有别的啥问题了