以文本方式查看主题 - 中华农历论坛 (http://bbs.nongli.net/index.asp) -- 历法知识 (http://bbs.nongli.net/list.asp?boardid=2) ---- [求助]关于回历计算。希望许先生能来帮我看看 (http://bbs.nongli.net/dispbbs.asp?boardid=2&id=16542) |
-- 作者:chwc -- 发布时间:2009/1/4 18:55:00 -- [求助]关于回历计算。希望许先生能来帮我看看 据《寿星万年历》中的回历计算介绍,我写了一个回历计算代码。希望许先生能来帮我看看会不会出错。要不是看到《寿星万年历》中的回历计算介绍,我以前对回历算法一点也不知。 function floor(x){/////数学函数 function huili(y,m,d,h){ |
-- 作者:xjw01 -- 发布时间:2009/1/5 9:32:00 -- getHuiLi:function(d0,r){ //回历计算 总积日的计算与小时数无关,所以入口参数不需要“小时”参数 var n = (floor((round(JD(y,m,d,h,0,0,8)*1000)/1000)-0.167)-1948439); 如果JD()返回标准的儒略日数,这一行最好改写为 var n = floor(JD(y,m,d,0,0,0,0)+0.51 - (2451545-503105) ); 或 var n = floor(JD(y,m,d,0,0,0,0) - 1948439.49 ); 或 var n = floor(JD(y,m,d,0,0,0,0) - 1948439.5 ); //如果JD()可以正常处理2的整指数值的线性组合值而不产生截断(一般是可以正确处理的),现代计算机是以二进制表达数值的,可以精确表达2的整指数值的线性组合值。十进制值0.5可以用二进制精确表达为0.1而不产生截断误差
|
-- 作者:chwc -- 发布时间:2009/1/5 18:48:00 -- 多谢 |
-- 作者:客人 -- 发布时间:2010/3/31 12:24:00 -- 我用上面的办法为什么算不对,2000.1.1儒略日d0是2451545.0,但怎么从儒略日算回历就是算不对呢,算出来的回历老是8338.11.1,能帮帮我吗?急啊 |