Precision

为具有精度的具体值类准备的 Mix-in. 这里所说的精度是指实数的近似性. 因此,最好不要用在诸如抽象值类,复数以及矩阵这些不能归入实数的类中.

模块方法:

Precision.included(module_or_class)

ruby 1.7 feature

Precision被include, 则调用本方法. 详情请参考Module#included.

该方法主要是为了在那些包含Precision的类和模块中自动定义induced_from方法而准备的.

Precision.induced_from(number)

number变为自己的类后返回结果. 在使用默认定义的情况下, 会引发TypeError异常, 因此必须在进行Mix-in的类中对该方法进行重新定义. 若在重新定义的过程中使用了Precision#prec的话, 可能会造成无限循环.

方法:

prec(klass)

self的精度变为klass并返回结果. 在使用默认定义的情况下, 会调用klass.induced_from(self), 并返回其结果.

生成新精度类时, 不要修改内部类的Precision.induced_from, 而应该对这个prec进行重新定义 .

prec_i

self变为Integer. 相当于prec(Integer).

prec_f

self变为Float. 相当于prec(Float).