Ruby 从数字创建范围

Ruby 从数字创建范围,ruby,numbers,Ruby,Numbers,我有一个包含数字的哈希数组: [ { y: 316.28, label: "Kaimur", color: "Light_Green" }, { y: 323.63, label: "Banka", color: "Light_Green" }, { y: 327.85, label: "Gaya", color: "Light_Green" }, { y:

我有一个包含数字的哈希数组:

 [
    {
    y: 316.28,
    label: "Kaimur",
    color: "Light_Green"
    },
    {
    y: 323.63,
    label: "Banka",
    color: "Light_Green"
    },
    {
    y: 327.85,
    label: "Gaya",
    color: "Light_Green"
    },
    {
    y: 346.11,
    label: "EastChamparan",
    color: "Light_Green"
    },
    {
    y: 358.38,
    label: "Nalanda",
    color: "Light_Green"
    },
    {
    y: 363.13,
    label: "Madhubani",
    color: "Light_Green"
    }
]
这里我的第一个号码是
316.28
,最后一个号码是
363.13
。我想创建此数组的范围,如
300到400
。这是一个使用数组的第一个和最后一个元素的示例

我想把它做成
300到400
或者
100到200
或者
10到20

如果我的数字是
316.28
,我想返回一个值
300
,如果我的值是
363.13
,那么它应该返回
400

我该怎么做

如果我的数组列表有三个2号或4号数字,如
12.5
123.45
3900.56
,我想对我的值进行四舍五入。这些可以是数字,我的所有数组都可以有这些数字。如果我必须在找到长度后对每个数字进行四舍五入,那将成为一场噩梦。我需要一个可以实现这一功能的函数。

与否定参数一起使用:

316.28.round(-2)
#⇒ 300
363.13.round(-2)
#⇒ 400

与否定参数一起使用:

316.28.round(-2)
#⇒ 300
363.13.round(-2)
#⇒ 400


*ys.minmax.map{#…}
:)
ys=input.map{| e | e[:y]};[ys.min,ys.max]
可以通过{e|e[:y]}变成
input.minmax_。如果我没有弄错的话,你可以使用
Math.log10
来获得要舍入的正数(你仍然需要将它设为负数;就像
num.round(-Math.log10(num).to_I)
应该有效,除非我现在正在学习数学)@SimpleTime
minmax_by
将返回整个散列,因此您仍然需要访问
e[:y]
来创建实际范围
*ys.minmax.map{#……}
:)
ys=input.map{| e | e[:y];[ys.min,ys.max]
可以通过{e|e[:y]}
变成
input.minmax_。如果我没有弄错的话,你可以使用
Math.log10
来获得要舍入的正数(你仍然需要将它设为负数;就像
num.round(-Math.log10(num).to_I)
应该有效,除非我现在正在学习数学)@SimpleTime
minmax\u by
将返回整个散列,因此您仍然需要访问
e[:y]
来创建实际范围