Ocaml遵循模数的C定义:
当整数被划分时,/运算符的结果是代数商,丢弃任何小数部分.90)如果商a/b是可表示的,则表达式(a/b)*b + a%b应等于a.
90)这通常被称为"截断为零".
这意味着它给出的余数在-n + 1到n-1或0到n-1的范围内.这是如何实施分歧的不幸副作用.对绝对值进行除法,最后校正符号.
要获得正模数,您可以使用:
# let (mod) x y = ((x mod y) + y) mod y;;
val ( mod ) : int -> int -> int = <fun>
# -1 mod 3;;
- : int = 2
# 4 mod 3;;
- : int = 1
Run Code Online (Sandbox Code Playgroud)
要么
# let (mod) x y = let res = x mod y in if res < 0 then res + y else res;;
val ( mod ) : int -> int -> int = <fun>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
470 次 |
| 最近记录: |