Ruby专家:您能帮助/建议改进这一系列的ruby代码吗?

tsd*_*own 1 ruby string

在拆分制表符分隔文件后,我在字符串变量中有我需要的值.不幸的是,这个文件的来源不受我的控制.

以下是值可能包含的三个确切示例:

  1. "5.344"
  2. "-2.345"
  3. "-.977"

注意空格,小数点前面没有'0',双引号在字符串中.一旦我在我的字段变量中有每个变量,这就是我目前正在做的事情:

int_val = BigDecimal(value_as_string.gsub(/-\./,"-0.").gsub(/\"/,'').strip).round(0).to_i
Run Code Online (Sandbox Code Playgroud)

我需要将每个四舍五入到最接近的整数(.to_i向下舍入).任何更好的想法将非常感激,因为我可以帮助,但这很臭!?

Chr*_*ett 7

def round(s)
    s.to_f.round
end

round("5.344") # 5
round("-2.345") # -2
round("-.977") # -1
Run Code Online (Sandbox Code Playgroud)