提问人:Panamaniac507 提问时间:12/23/2022 最后编辑:Panamaniac507 更新时间:12/23/2022 访问量:80
.round(precission) Ruby 方法不起作用
The .round(precission) Ruby method is not working
问:
问题详情:
我的例程是一组简单的方程,结果必须以小数点后 4 位的浮点元素数组的形式生成结果。问题是 .round(4) 方法不起作用。
我试过什么:
- 使用的 .round(4)
- 二手.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 位小数组成的数组。
我得到了什么?
由两个浮点元素组成的数组,没有小数点精度。
我想知道什么?
- 为什么 .round(4) 方法在我的代码上下文中不起作用?
- 如何在代码上下文中使用 .round(4) 以使其正常工作?
答:
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,或者使用 .x0
fdiv
0赞
engineersmnky
12/24/2022
@steenslag或干脆改成3
3.0
0赞
Panamaniac507
12/26/2022
非常感谢您的评论!我在哈利·特雷恩的建议下解决了这个问题
评论