Techioz Blog

.round(precision) Ruby メソッドが機能しない

概要

問題の詳細

私のルーチンは単純な一連の方程式であり、結果は小数点以下 4 桁の精度の float 要素の配列として返される必要があります。問題は、 .round(4) メソッドが機能しないことです。

私が試したこと

私のコードは次のとおりです:

def bar_triang(p1,p2,p3)
  #your code here
  
  bary=[]
  
  x0= [p1[0],p2[0],p3[0]].sum 
  x0t= x0.div(3)
  x0tf = x0t.round(4)
  
  bary=bary.push(x0tf)
  
  y0 = [p1[1],p2[1],p3[1]].sum
  y0t =y0.div(3)
  y0tf = y0t.round(4)
  
  bary=bary.push(y0tf)
  
  p bary  
  
end

注: このルーチンは、次の形状 [p1,p2,p3] の配列を受け入れます。ここで、p1 から p3 は座標 [x,y] です。 [p1,p2,p3] は配列の配列です。

私が何を期待しているのでしょうか?小数点以下 4 桁の精度を持つ 2 つの float 要素の配列。

私が得ているものは何ですか?小数精度を持たない 2 つの float 要素の配列。

私が知りたいことは何ですか?

解決策

あなたの問題は、round(4) が正しく動作しないことが原因ではありません。それはコードの一部であるためです。

x0t = x0.div(3) # Always return Integer
x0tf = x0t.round(4)

div の代わりに / を使用することをお勧めします。

 x0t = x0 / 3 # return Float
 x0tf = x0t.round(4)