中华农历论坛知识讨论区历法知识 → [原创]求助:JavaScript中两个浮点数求余数得出的结果也是浮点数吗?


  共有14410人关注过本帖树形打印

主题:[原创]求助:JavaScript中两个浮点数求余数得出的结果也是浮点数吗?

帅哥哟,离线,有人找我吗?
秦汉昌
  1楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:业余侠客 帖子:372 积分:1447 威望:0 精华:0 注册:2008/12/20 18:10:00
[原创]求助:JavaScript中两个浮点数求余数得出的结果也是浮点数吗?  发帖心情 Post By:2011/2/11 23:07:00

求助:JavaScript中两个浮点数求余数得出的结果也是浮点数吗?

比如,寿星历中的角度化简,如果按照JScript操作指南所讲:两浮点数取余时按四舍五入来运算,那么如下化简就不粗确了

function rad2mrad(v){ //对超过0-2PI的角度转为0-2PI
  v=v % (2*Math.PI);
  if(v<0) return v+2*Math.PI;
  return v;
}

 

还有,有关根据儒略日计算星期几的情况:

 

  return h.substr(h.length-2,2)+':'+m.substr(m.length-2,2)+':'+s.substr(s.length-2,2);
  },
  //星期相关
  Weeks : new Array('日','一','二','三','四','五','六','七'),
  getWeek:function(jd){ return int2(jd+1.5)%7; }, //星期计算
  nnweek:function(y,m,n,w){ //求y年m月的第n个星期w的儒略日数
   var jd = JD.JD(y,m,1.5); //月首儒略日
   var w0 = (jd+1)%7;       //月首的星期
   var r  = jd-w0+7*n+w;    //jd-w0+7*n是和n个星期0,起算下本月第一行的星期日(可能落在上一月)。加w后为第n个星期w
   if(w>=w0) r-=7; //第1个星期w可能落在上个月,造成多算1周,所以考虑减1周
   if(n==5){
    m++; if(m>12) m=1, y++;   //下个月
    if(r>=JD.JD(y,m,1.5)) r-=7; //r跑到下个月则减1周
   }
   return r;
  }
};

 

nnweek  中  return int2(jd+1.5)%7; },  与  nnweek   中  var w0 = (jd+1)%7;       //月首的星期

的代码有差异呢,我想,应该是 两浮点数求余数能得出浮点数的原因吧,求月道星期几的程序中,需浮点数来计算


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
秦汉昌
  2楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:业余侠客 帖子:372 积分:1447 威望:0 精华:0 注册:2008/12/20 18:10:00
  发帖心情 Post By:2011/2/11 23:25:00

我已经用JavaScript测试

rad2mrad(6.78)  的结果为:0.496814692820414

 

证实 JavaScript 求浮点数的余数能得出浮点结果而不会四舍五入

 

请教一下,这个求浮点数的余数,是怎么俅来的呢

是不是这样的:

 

1、将两个浮点数相除,得出浮点商;

2、将浮点商向下取整;

3、将被除数减去下整商乘以也除数的差作为 两个浮点数的余数

 

模拟代码如下:

function 求点余数(f1,f2){ 

return  f1-(floor( f1/f2)*);

}

 

 

请大家指点迷津,呵呵

 


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
秦汉昌
  3楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:业余侠客 帖子:372 积分:1447 威望:0 精华:0 注册:2008/12/20 18:10:00
  发帖心情 Post By:2011/2/11 23:46:00

我已经用汉语编程 与 JScript脚本比较没试

表明我们上面的判断准确无误

 

我用汉编写了一个求浮点余数的词

再利用它重写 寿星历中角度化简的函数rad2mrad分别作6.78弧度化简测试:

 

汉编测试结果如下:

 

编 求浮点余数
   ∽   0.0 <
   就   ↑↓  绝对值  ↑↓  -1.0   ∵
   否则  1.0    ∵
   然后  双♂  /  下取整  *
        绝对值    -  *
   。 ★
编 角度转换   ( v --- )   \  rad2mrad
  \ 对超过0-2PI的角度转为0-2PI
   π  2.0 *  求浮点余数
   ♂  0.0  <
   就     π  2.0 *  +
   然后
   。 ★
10 位小数 ★
6.78 角度转换 看数摞 [1] 0.4968146928 ★.
摞初始 ★
12 位小数 ★
6.78 角度转换 看数摞 [1] 0.496814692820 ★.
摞初始 ★
15 位小数 ★
6.78 角度转换 看数摞 [1] 0.496814692820414 ★.

JScript测试代码与结果如下:

代码为:

 

<html>
<head>
<title>Example1.1 Hello Word!</title>
<script type="text/JavaScript">
<!--
function rad2mrad(v){ //对超过0-2PI的角度转为0-2PI
  v=v % (2*Math.PI);
  if(v<0) return v+2*Math.PI;
  return v;
}
function PageLoad()
{
document.getElementsByTagName("h1")[0].innerHTML = "6.78弧度化简至0至2PI以内的结果为:"+rad2mrad(6.78);
}
-->
</script>
</head>
<body >
<h1>
<noscript>您的浏览器不支持JavaScript,请检查浏览器版本或者安全设置,谢谢!</noscript>
</h1>
<hr/>
<p>document.getElementsByTagName是我们接触到的domcument文档对象模型的第二个接口,它的作用通过它的名字很容易理解:它解析文档获取具有指定标记名称的一个列表,在这里document.getElementsByTagName("h1")[0]得到文档中的第一个&1th1&gt标记。</p>
</body>
</html>

 

运行结果如下:

6.78弧度化简至0至2PI以内的结果为:0.496814692820414


 

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

 


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部

返回版面帖子列表

[原创]求助:JavaScript中两个浮点数求余数得出的结果也是浮点数吗?








签名