Ruby字符串到数字保持格式

时间:2013-09-02 07:40:17

标签: ruby

我有一个号码存储为例如"2,65424.00"有没有办法将其转换为浮点数2,65424.00并保留格式?

3 个答案:

答案 0 :(得分:2)

不,内部表示不能像这样改变。解决此问题的唯一方法是为to_sFloat编写Fixnum方法。例如:

class Float
  def to_s
    # your formatting: sprintf("...", self)
  end
end

由于您希望在Fixnum上获得相同的表示,然后您可以将Fixnum转换为Float,然后将to_s方法基于Float的to_s方法。

class Fixnum
  def to_s
     self.to_f.to_s
  end
end

这样,您可以通过在Float上调用to_s来获得表示

265424.to_s
=> "2,65424.00"

,或使用插值时:

 "When you write it like this #{265424}"
 => "When you write it like this 2,65424.00"

在我看来,这是正确的方法,因为你想要个人代表你的数字。这很好,但是这个单独的表示应该在字符串级别实现,因为如果你想通过编队很好地显示一些东西,那就是字符串的用途。

使用这种猴子修补方法也可能有问题,这取决于你是否想要提供一个库,等等。如果你只设计一个采用数字并打印格式化的专用格式方法,那也没关系。 / p>

答案 1 :(得分:1)

You can not save float value with ',' as a delimiter in mysql

但是,您可以执行以下操作

"2,65424.00".gsub(',', '').to_f # 265424.0

答案 2 :(得分:0)

尝试将字符串对象转换为整数string.to_i或浮点数string.to_f