yto*_*obi 5 python ocaml operators modulo
与python中的模运算符相比,OCaml中 的模函数mod返回结果不同.
OCaml的:
# -1 mod 4
- : int = -1
Run Code Online (Sandbox Code Playgroud)
蟒蛇:
>>> -1 % 4
3
Run Code Online (Sandbox Code Playgroud)
为什么结果不同?
是否有任何标准模块功能,如%OCaml中那样运行?
Python在%运算符的使用方面略有不同,它实际上计算了两个值的模数,而其他编程语言使用相同的运算符计算余数.例如,Scheme中的区别很明显:
(modulo -1 4) ; modulo
=> 3
(remainder -1 4) ; remainder
=> -1
Run Code Online (Sandbox Code Playgroud)
在Python中:
-1 % 4 # modulo
=> 3
math.fmod(-1, 4) # remainder
=> -1
Run Code Online (Sandbox Code Playgroud)
但OCaml中,有只mod(其中计算整数余数),根据该表和邮件中注明文档:
-1 mod 4 (* remainder *)
=> -1
Run Code Online (Sandbox Code Playgroud)
当然,您可以按照以下方式实现自己的modulo操作remainder:
let modulo x y =
let result = x mod y in
if result >= 0 then result
else result + y
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4873 次 |
| 最近记录: |