我有一系列具有数字的哈希:
[
{
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"
}
]
Run Code Online (Sandbox Code Playgroud)
这是我的第一个号码316.28,最后一个号码是363.13.我想从这个数组创建范围300 to 400.这是使用数组的第一个和最后一个元素的示例.
我想让它像300 to 400或100 to 200或10 to 20.
如果我的号码是316.28,我想要返回一个值300,如果我的值是363.13,那么它应该返回400.
我怎样才能做到这一点?
如果我的数组列表有三个数字2或4个数字,如,或12.5,我想舍入我的值.这些可以是数字,我的所有数组都可以有这些数字.如果我在找到一个长度后必须围绕每个数字,这就变成了一场噩梦.我需要一个可以做到这一点的功能.123.453900.56
使用Float#round否定参数:
316.28.round(-2)
#? 300
363.13.round(-2)
#? 400
Run Code Online (Sandbox Code Playgroud)
input = _
#? [{: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"}]
ys = input.map { |e| e[:y] }
#? [316.28, 323.63, 327.85, 346.11, 358.38, 363.13]
Range.new *[ys.min, ys.max].map { |e| e.round(-e.round.to_s.length+1) }
#? 300..400
Run Code Online (Sandbox Code Playgroud)