以文本方式查看主题 - 中华农历论坛 (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));是不行的,因为结果的 负号 取决于 第一个数。所以还要加一判断条件第一个数是不是负数。 |