如何在Scheme中进行浮点模运算?
%
未定义。 取模
仅适用于整数。我想要相当于 Javascript 的 modulo / c 的 fmod 的东西。
%
isn't defined. modulo
only works on integers. I want something equivalent to Javascript's modulo / c's fmod.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
我不知道方案,但从数学上讲,你可以这样做:
因此,对于像 2.5 mod 2 这样的数字,你会得到:
I don't know scheme, but mathematically you could do something like:
So for a number like 2.5 mod 2 you would get:
我相信这是 javascript 的等价物,其中 n=被除数,d=除数:
Here is the javascript equivalent, I believe, where n=dividend, d=divisor:
flonum库定义了
flmod
,它可以满足您的需求。试点计划中:The flonum library defines
flmod
, which does what you want. In Pilot Scheme:如果您的目标是标准化角度以适合 -π 和 π 之间,那么您可以这样做:
否则,您可以缩放您的参数:
我不确定该函数对于负参数应如何表现,所以我没有考虑一下他们。
If your goal is to normalize angle to fit between -π and π, then you can do it like this:
Otherwise, you can scale your arguments:
I'm not sure how the function should behave for negative arguments, so I didn't consider them.
mod
函数似乎接受整数、有理数和浮点数(例如在 petite chez 方案中):如果您想要只接受浮点数(在方案中称为“flonum”)的操作,那么您'当使用符合 r6rs 的方案时,库中定义了一堆 flonum 操作,包括 flmod,例如:
以上是在 chez 方案中运行的。
对于 flonum 运算,请参见 [1] 第 46 页第 11.3 节
[1] http://www.r6rs.org/final/r6rs-lib.pdf" rel="nofollow noreferrer">http:// /www.r6rs.org/final/r6rs-lib.pdf
The
mod
function seems to take integers, rationals and floating point numbers (e.g. in petite chez scheme):If you want operations that only take a floating point number, called a "flonum" in scheme and you're using a r6rs compliant scheme, there are a bunch of flonum operations defined in the library, including
flmod
, e.g.:The above was run in chez scheme.
For flonum operations, see section 11.3 on page 46 of [1]
[1] http://www.r6rs.org/final/r6rs-lib.pdf
看起来剩余就是你想要的词。来自此处:
It looks like remainder is the word you want. From here: