我正在创建 Rationals (int * int) 的结构,我的功能之一是:
fun diff ((n, d), (n', d')) = let val (top, bot) = sum ((n, d), (~n', d'))
in
(top / gcd(top, bot), bot / gcd(top, bot))
end
gcd 给了我最大的公分母,所以我最终不是 2/8,而是应该是 1/4。gcd 使用 mod 来查找 gcd,因此它返回一个 int。但是我无法将除法表达式输入为 int。当我尝试添加: int * int
到 diff 声明的末尾时,它给了我一个类型错误,即表达式 real * real 和 int * int 不匹配。
如何强制整数除法,或将表达式转换为整数?如果两者都可以,那么哪个更好?