.round(precission) Ruby 方法不起作用

The .round(precission) Ruby method is not working

提问人:Panamaniac507 提问时间:12/23/2022 最后编辑:Panamaniac507 更新时间:12/23/2022 访问量:80

问:

问题详情:

我的例程是一组简单的方程,结果必须以小数点后 4 位的浮点元素数组的形式生成结果。问题是 .round(4) 方法不起作用。

我试过什么:

  1. 使用的 .round(4)
  2. 二手.to_f(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 位小数组成的数组。

我得到了什么?

由两个浮点元素组成的数组,没有小数点精度。

我想知道什么?

  1. 为什么 .round(4) 方法在我的代码上下文中不起作用?
  2. 如何在代码上下文中使用 .round(4) 以使其正常工作?
Ruby Math 舍入 精度

评论

0赞 rlandster 12/24/2022
您已经提供了函数的代码,这很好,但是您能否提供一些调用函数的代码以及该代码的错误输出?

答:

1赞 Harry Train 12/23/2022 #1

您的问题不是因为无法正常工作。这是因为部分代码:round(4)

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

我建议使用代替:/div

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

评论

1赞 steenslag 12/23/2022
x0 / 3 # return Float:仅当是 Float 时。所以先把它转换成一个 Float,或者使用 .x0fdiv
0赞 engineersmnky 12/24/2022
@steenslag或干脆改成33.0
0赞 Panamaniac507 12/26/2022
非常感谢您的评论!我在哈利·特雷恩的建议下解决了这个问题