Ruby 中浮点范围的默认步骤是什么?

What is the default step in a float range in Ruby?

在 Ruby 中,this 代码编译:

(Math::PI * 6 .. Math::PI * 6.5).bsearch{|f| Math.cos(f) <= 0.5}

在这种情况下,范围的默认步长是多少?

你的情况没有任何步骤。无法迭代浮点范围。

代码

(Math::PI * 6 .. Math::PI * 6.5).to_a

throws 类型错误:

TypeError: can't iterate from Float


您的代码有效,因为 bsearch 没有遍历范围值。相反,它是最小值和最大值的 "aware",并将间隔减半,直到达到块 { |f| Math.cos(f) <= 0.5 } returns true.

的值

为了看到这一点,您可以添加一个 puts 语句来检查 bsearch:

尝试的值
(Math::PI * 6 .. Math::PI * 6.5).bsearch { |f| puts f; Math.cos(f) <= 0.5 }