%
未定义。 modulo
只适用于整数。我想要一些相当于Javascript的模/ c的fmod。如何在Scheme中执行浮点模运算?
1
A
回答
1
这里是JavaScript等价的,我相信,其中n =红利,d =除数:
(let ((nOverD (/ n d)))
(let ((q (if (> nOverD 0.0) (floor nOverD) (ceiling nOverD))))
(- n (* d q))))
1
我不知道方案,但在数学上,你可以这样做:
rem = num - trunc(num/mod) * mod;
因此,对于一些像2.5 MOD 2,你会得到:
2.5 - trunc(2.5/2) * 2
= 2.5 - trunc(1.25) * 2
= 2.5 - 1 * 2
= 2.5 - 2
= 0.5
-1
1
的flonum库定义flmod
,这你想要做什么。在试验计划:
(require rnrs/arithmetic/flonums-6)
(flmod pi (sqrt 2))
0
如果你的目标是正常化的角度-π和π之间的配合,那么你可以做这样的:
(angle (make-polar 1 x))
否则,你可以扩展你的论点:
(define (mod* x y)
(let* ((pi (* 4 (atan 1)))
(c (/ y pi))
(result (angle (make-polar 1 (/ x c)))))
(* (+ result (if (negative? result) pi 0)) c)))
我不知道函数应该如何处理负面的论点,所以我没有考虑它们。
0
的mod
功能似乎取整数,有理数和浮点数(以娇小桑切斯方案如):
> (mod 10 4.5)
1.0
> (mod 5.5 1.4)
1.3000000000000007
> (mod 5.5 2/3)
0.16666666666666696
如果希望只需要一个浮点数操作,称为“flonum”方案和您使用的是兼容R6RS方案,也有在库中定义一群flonum操作,包括flmod
,如:
> (flmod 5. 4.)
1.0
> (flmod 5. 4.5)
0.5
> (flmod 10. 4.5)
1.0
> (flmod 10 4.5)
Exception in flmod: 10 is not a flonum
以上在桑切斯方案运行。
对于flonum操作,见11.3节第46页上的[1]
相关问题
- 1. 在Python中执行Javascript浮点运算
- 2. 如何在python中做浮点运算?
- 3. 浮点模数运算
- 4. 浮点运算
- 5. 浮点运算
- 6. 浮点运算
- 7. 浮点运算中的清零行为
- 8. c中的浮点运算
- 9. 在Java的浮点运算
- 10. 约浮点运算
- 11. 浮点运算和浮点值比较
- 12. 如何MSACCESS执行位运算运算
- 13. 浮点算术运算不如预期
- 14. 如何在批处理中正确执行模数运算?
- 15. 如何在C#中执行模乘和幂运算?
- 16. 在浮点计算中点
- 17. 浮点运算速度
- 18. 浮点运算错误
- 19. 浮点运算的Javascript
- 20. 优化浮点运算
- 21. 避免浮点运算
- 22. 浮点运算的精度
- 23. 浮点运算,C输出
- 24. 浮点运算异常
- 25. 浮点运算性能C++
- 26. c + +和matlab浮点运算
- 27. 如何在浮点值中使用%运算符c
- 28. 如何在Python中使用精确的浮点运算?
- 29. 如何在C执行布尔运算++
- 30. “无效的算术运算符”在bash做浮点运算
你问的具体方案,问题在这里;请尽量不要使用浮点参数作为第一个参数 – 2009-11-06 23:20:07