我想知道,我如何才能在红宝石上获得最佳精度。有人告诉我,最佳精度可能介于0和1之间,因为当你进入更大的数字时,步骤也会增加。
我想找出一种方法可以知道最小浮点数是多少以及下一个浮点数是多少,那么精度就是差值吧?如果我是对的,我怎么能在红宝石上做到这一点?
我不确定如何使用此http://ruby.wikia.com/wiki/Float来查找该信息。
任何帮助表示感谢。
答案 0 :(得分:3)
就有效数字而言,无论比例如何,精度都是相同的。也就是说,如果您将范围从[0.0,1000.0]缩小到[0.0,1.0],只需将自然范围中的数字除以1000.0,就不会对范围的精度产生明显的影响。实际上,较大的范围将具有稍微更高的精度,因为它完全包含较小的范围。
至于发现绝对精度,你有两个问题:
(x + 1.0) - x
)。如果差值为零,则将加数((x + 2.0) - x
)加倍并重复,直到差值为非零。否则,将加数减半(至0.5)并重复,直到差值为零。无论何时停止,产生非零差异的最低加数是ulp。 (我从模糊的记忆中描述了这一点,所以它可能是NQR。)
答案 1 :(得分:1)
您可以使用类Rational
- 它将非整数存储为两个Integer
的分数,(据我所知)将自动转换为Bignum
,需要。
答案 2 :(得分:1)
Flt ruby库提供任意浮点精度。