中华农历论坛知识讨论区历法知识 → 回复帖子

  回复帖子
用户名:   *您没有注册?
密码:   *忘记论坛密码?    标题采用“回复:XXX....”
主题标题:  *不得超过 200 个汉字
当前心情
上一页 发帖表情 下一页
内容
高级设置: 签名: 回帖通知:
 

主题最新回顾(发布时间:2011/6/19 23:37:00)
--  作者:秦汉昌
--  
以下是引用浪-淘-沙在2011-6-19 22:44:00的发言:

如果你想要更多位的中间过程量的有效数字,应当在程序的计算流程上进行改进。

一般为了保留更多的有效数字,要求避免“大数”与“小数”直接相加、减。

 

比如1.234567890123456+0.0000000000000000123456-1.234567890123456

差不多等于0,有效数字位数很少。

 

但如果改为:

A=1.234567890123456-1.234567890123456

B=A+0.0000000000000000123456

则B的结果,有效位数有6位。

 

天文计算时,经常会遇到“大”数与“小”数的相加减。所以程序设计时一定要掌握一个技巧,尽量避免开。

呵呵,谢谢,在以后的调试中,我尽量尝试您 的方法来改进


主题最新回顾(发布时间:2011/6/19 22:44:00)
--  作者:浪-淘-沙
--  

如果你想要更多位的中间过程量的有效数字,应当在程序的计算流程上进行改进。

一般为了保留更多的有效数字,要求避免“大数”与“小数”直接相加、减。

 

比如1.234567890123456+0.0000000000000000123456-1.234567890123456

差不多等于0,有效数字位数很少。

 

但如果改为:

A=1.234567890123456-1.234567890123456

B=A+0.0000000000000000123456

则B的结果,有效位数有6位。

 

天文计算时,经常会遇到“大”数与“小”数的相加减。所以程序设计时一定要掌握一个技巧,尽量避免开。


主题最新回顾(发布时间:2011/6/19 22:34:00)
--  作者:秦汉昌
--  

呵呵,已经有十个有效数字位是正确的了

       呵呵,只要不影响天文计算,我也不想再去深研了


主题最新回顾(发布时间:2011/6/19 22:24:00)
--  作者:浪-淘-沙
--  
以下是引用秦汉昌在2011-6-19 22:19:00的发言:
是从第六位开始,有差异了

还是看有效数字的。

有10位有效数字,应当也不会影响结果。

 

如果原始数据的有效位数很低,比如只有6位,你计算得到10位数字,意义也不大的。

 

一个程序里的中间量的有效位数,不必太在意。你要看结果与“真值”之间的有多大的差别。


主题最新回顾(发布时间:2011/6/19 22:19:00)
--  作者:秦汉昌
--  
是从第六位开始,有差异了

主题最新回顾(发布时间:2011/6/19 22:18:00)
--  作者:秦汉昌
--  
以下是引用浪-淘-沙在2011-6-19 21:49:00的发言:

   2912.4192316218

与2912.419231621753

 

有区别吗?四舍五入而已。

 

且有14位有效数字,你还嫌少?

不好意思,我在一楼把许老师的源码实际测试结果弄错了,许老师的代码结果应该是:2912.4192312033106


主题最新回顾(发布时间:2011/6/19 22:11:00)
--  作者:秦汉昌
--  

结果为:2912.4192312033106


document.getElementsByTagName是我们接触到的domcument文档对象模型的第二个接口,它的作用通过它的名字很容易理解:它解析文档获取具有指定标记名称的一个列表,在这里document.getElementsByTagName("h1")[0]得到文档中的第一个&1th1>标记。

 

 

测试原码如下:

 

<html>
<head>
<TITLE>寿星天文历</TITLE>
<META c  name=keywords>
<meta http-equiv="Content-Type" c>

<style>
td {font-family:宋体; font-size:12px; line-height:150%}
 .bd0   {border: 0px}
 .bd1   {border: 1px solid #000000}
 .bd2   {border: 2px solid #000000}
 .dTop  {border-top:    1px solid #000000}
 .dBot  {border-bottom: 1px solid #000000}
 .dRig  {border-right:  1px solid #000000}
 .dLef  {border-left:   1px solid #000000}
 .dRB   {border-right: 1 solid #000000;border-bottom: 1 solid #000000}
 .dRT   {border-right: 1 solid #000000;border-top:    1 solid #000000}
 .dBot2 {border-bottom: 1px solid #C0C0C0}
 .dTop2 {border-top:    1px solid #C0C0C0}

</style>
<!--js1S-->
<script language=javascript src=tools.js></script><!--工具函数-->
<script language=javascript src=eph0.js></script> <!--天文常数等-->
<script language=javascript src=ephB.js></script> <!--恒星计算(如果不须要恒星,删除此行)-->
<script language=javascript src=eph.js></script>  <!--星历模块-->
<script language=javascript src=JW.js></script>   <!--全国城市经纬数据库及皇帝纪年数据库-->
<script language=javascript src=lunar.js></script><!--日历物件-->
<script language=javascript src=vml.js></script>  <!--画图物件-->
<script language=javascript src=help.js></script> <!--即时帮助-->
<script language=javascript src=page_gj.js></script> <!--工具页面函数-->
<!--js1E-->

<script type="text/JavaScript">
function PageLoad()
{  var c='a'+'b';
   var b=XL0_calc(1,0,1.114532,10);
   document.getElementsByTagName("h1")[0].innerHTML = ( "结果为:"+b);
}

</script>
</head>
<body >

<h1>
<noscript>您的浏览器不支持JavaScript,请检查浏览器版本或者安全设置,谢谢!</noscript>
</h1>
<hr/>
<p>document.getElementsByTagName是我们接触到的domcument文档对象模型的第二个接口,它的作用通过它的名字很容易理解:它解析文档获取具有指定标记名称的一个列表,在这里document.getElementsByTagName("h1")[0]得到文档中的第一个&1th1&gt标记。</p>
</body>
</html>


主题最新回顾(发布时间:2011/6/19 21:49:00)
--  作者:浪-淘-沙
--  

   2912.4192316218

与2912.419231621753

 

有区别吗?四舍五入而已。

 

且有14位有效数字,你还嫌少?


主题最新回顾(发布时间:2011/6/19 21:40:00)
--  作者:秦汉昌
--  
从天文计算的角度讲,不知精确到前六位会不会对计算的准确性产生较大影响

主题最新回顾(发布时间:2011/6/19 21:39:00)
--  作者:秦汉昌
--  
这个差异导致结果从第七位小数开始不相同