有没有一种简单的方法可以将数字转换为字符串中的浮点数?

Sag*_*dya 1 ruby regex

我有一个字符串input = "2 + 3",我想转换为"2.0 + 3.0".我用以下两种复杂的方法实现了这个目标:

floats   = input.scan(/\d+/).map(&:to_f)
operator = input.scan(/[+,\-,*,\/]/)     
operator.unshift(floats.first.to_s)
        .push(floats.last.to_s).join(' ')
#=> "2.0 + 3.0"
Run Code Online (Sandbox Code Playgroud)

要么:

input.split(/\s+/)
     .map{|i| ['+','-','*','/'].include?(i) ? i : i.to_f }
     .join(' ')
#=> "2.0 + 3.0"
Run Code Online (Sandbox Code Playgroud)

有更简单或更好的方法吗?

Ale*_*kin 8

我假设你只是在讨论转换整数,而所有其他答案都假设字符串包含整数.我会选择:

'1.0 + 2/4.5 - 15'.gsub(/(?<![\.\d])\d+(?![\.\d])/) { |m| "#{m}.0" }
#? "1.0 + 2.0/4.5 - 15.0"
Run Code Online (Sandbox Code Playgroud)