以文本方式查看主题

-  中华农历论坛  (http://bbs.nongli.net/index.asp)
--  历法知识  (http://bbs.nongli.net/list.asp?boardid=2)
----  救助!javascript 中的%?  (http://bbs.nongli.net/dispbbs.asp?boardid=2&id=27827)

--  作者:delcomp
--  发布时间:2010/5/22 10:59:00
--  救助!javascript 中的%?
对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;
这是我直接转化的,但可定通不过的。哪位网友指点一下,先谢过了。
--  作者:delcomp
--  发布时间:2010/5/22 12:27:00
--  
突然发现自己太笨了。自己搞定了,只想着怎么从Java转换,其实就是把大于2pi变成小于2pi的,很简单:
v:=v-2*pi*floor(v / (2*PI));
--  作者:春光
--  发布时间:2010/5/22 12:34:00
--  

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

 


--  作者:delcomp
--  发布时间:2010/5/22 14:39:00
--  
pascal好像没有类似函数
--  作者:sadanboy2009
--  发布时间: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,找到可以探讨的人了
--  作者:changsima
--  发布时间: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));是不行的,因为结果的 负号 取决于 第一个数。所以还要加一判断条件第一个数是不是负数。