中华农历论坛知识讨论区历法知识 → 救助!javascript 中的%?


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

主题:救助!javascript 中的%?

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


加好友 发短信
等级:新手上路 帖子:11 积分:274 威望:0 精华:0 注册:2010/5/15 22:15:00
救助!javascript 中的%?  发帖心情 Post By:2010/5/22 10:59:00

对JavaScript不是很熟悉,%是求余吗?感觉和c差不多。
寿星万年历中的这个函数如何转换?
function rad2mrad(v){ //对超过0-2PI的角度转为0-2PI
  v=v % (2*Math.PI);
  if(v<0) return="return"  v+2*Math.PI;
  return v;
}

2*Math.PI是个浮点数,怎么也可以求余数了?
转换为Pascal时如何转化。

function rad2mrad(v:double):double; //对超过0-2PI的角度转为0-2PI
begin
  v:=v mod (2* PI);;
  if(v<0) then="then"  v:= v+2*PI;
  result:=v;
end;
这是我直接转化的,但可定通不过的。哪位网友指点一下,先谢过了。

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


加好友 发短信
等级:新手上路 帖子:11 积分:274 威望:0 精华:0 注册:2010/5/15 22:15:00
  发帖心情 Post By:2010/5/22 12:27:00

突然发现自己太笨了。自己搞定了,只想着怎么从Java转换,其实就是把大于2pi变成小于2pi的,很简单:
v:=v-2*pi*floor(v / (2*PI));

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


加好友 发短信
等级:版主 帖子:917 积分:7577 威望:10 精华:1 注册:2005/3/17 11:37:00
  发帖心情 Post By:2010/5/22 12:34:00

C语言浮点数取模用用函数double    fmod(double x,double y)          返回x/y的余数

 


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


加好友 发短信
等级:新手上路 帖子:11 积分:274 威望:0 精华:0 注册:2010/5/15 22:15:00
  发帖心情 Post By:2010/5/22 14:39:00

pascal好像没有类似函数

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


加好友 发短信
等级:论坛游民 帖子:35 积分:1266 威望:0 精华:0 注册:2009/6/7 12:15:00
  发帖心情 Post By:2010/5/22 21:26:00

// 获得一实数的小数部分
  function GetTail(X: Extended): Extended;
  begin 
      Result := X - Trunc(X)
  end;
  // 实数的求余数
  function GetRemain(X, W: Extended): Extended;
  begin
    Result := GetTail(X/W) * W;
  end;
  //对超过0-2PI的角度转为0-2PI
  function Rad2mRad(v:Extended):Extended;
  begin
    Result:=GetRemain(v,PI);
    if Result<0 then="then"  Result:=Result+2*PI;
  end;
//对超过-PI到PI的角度转为-PI到PI
  function="function"  Rad2rRad(V:Extended):Extended;
  begin
    Result:=GetRemain(V,2*Pi);
    if="if"  Result<=-PI then="then"  Result:=Result+2*PI;
    if="if"  Result="Result" >PI then Result:=Result-2*PI;
  end;
我是这样实现的,楼主也用pascal,找到可以探讨的人了

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


加好友 发短信
等级:新手上路 帖子:3 积分:253 威望:0 精华:0 注册:2010/6/5 0:58:00
  发帖心情 Post By:2010/7/19 23:10:00

运算操作符“%”在vb中也没有,vb中的a Mod b 得到的是不允许有小数的,
但是可以自己写一个函数。我取名为 Mod2(a,b),可以达到java的运算符%的目的:
函数很短:


Function Mod2(Num1, Num2) As Double
    Num2 = Abs(Num2)
    If Num1 >= 0 Then
    Mod2 = Num1 - Int(Num1 / Num2) * Num2 '运算的正负号只是取决于Num1的符号
    Else
    Mod2 = Int(Abs(Num1) / Num2) * Num2 - Abs(Num1)
    End If
End Function

你简单的用 v:=v-2*pi*floor(v / (2*PI));是不行的,因为结果的 负号 取决于 第一个数。所以还要加一判断条件第一个数是不是负数。

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

返回版面帖子列表

救助!javascript 中的%?








签名