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 }
在 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 }