我有一个号码存储为例如"2,65424.00"
有没有办法将其转换为浮点数2,65424.00
并保留格式?
答案 0 :(得分:2)
不,内部表示不能像这样改变。解决此问题的唯一方法是为to_s
和Float
编写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
。