1

byar gemにある次のメソッドを検討してください。

##
# Calculate lower boundary for observed cases
def self.lower_bound(obs, z_value = Z_VALUE)
  return 0 if obs == 0
  obs * (1 - 1.quo(9 * obs) - z_value.quo(3 * Math.sqrt(obs))) ** 3
end

##
# Calculate upper boundary for observed cases
def self.upper_bound(obs, z_value = Z_VALUE)
  obs = obs + 1
  obs * (1 - 1.quo(9 * obs) + z_value.quo(3 * Math.sqrt(obs))) ** 3
end

これらのメソッドを Javascript に移植したいのですが、どうすればよいかわかりquoません。

4

1 に答える 1

6

quoNumericクラスで定義された(およびクラスで再定義された)メソッドであり、指定された引数でレシーバーのFloatを計算します。つまり、は とほぼ同じですが、より正確にはです。x.quo(y)x / y

ここでの違いは、xyFixnums (つまり、整数値) の場合です。

> (1 / 2)
=> 0
> (1 / 2).class
=> Fixnum
> 1.quo(2)
=> (1/2)
> 1.quo(2).class
=> Rational
> 1.quo(2.5)
=> 0.4
> 1.quo(2.5).class
=> Float

基本的に、受信者と引数に応じてまたはquoを返すことにより、除算の結果が正確に表現されるようにします。RationalFloat

Javascript では、さまざまな種類の数値の間に区別はなく、除算は必要に応じて既に浮動小数点数を返すため、最初のメソッドは次のように表現できます。

obs * Math.pow(1 - 1 / (9 * obs) - z_value / (3 * Math.sqrt(obs)), 3)
于 2013-10-07T12:11:50.697 に答える