为具有公差的浮点数定义相等运算符:(〜=)

时间:2014-05-11 11:59:59

标签: f# operator-overloading

我目前有这个功能:

let equal x1 x2 = abs(x1 - x2) < tolerance

检查是否具有一定的容差,因为我们正在检查浮点数,因此它们不会完全相等。

如何在浮点数上将其设为二进制中缀运算符,如x~ = y?

我试过了:

type System.Double with
static member (~-) (this, that: System.Double) =
    equal this that

然后它说我扩展方法不能提供运算符重载

然后我尝试从System.Double继承并执行相同的操作:

type double() =
inherit System.Double()
static member (==) (this, that: double) =
    equal this that

但它抱怨我无法继承“密封”类型

然后你如何用这个操作符重载来定义一个类型double,它的作用就像普通的System.Double(F#中的“float”)但是有了这个运算符的重载方法?

1 个答案:

答案 0 :(得分:1)

let (=~) x1 x2 = abs(x1 - x2) < tolerance