我有一个存储为字符串的数字,例如"2,65424.00"
有没有办法将其转换为浮点数2,65424.00
并保持格式?
问问题
285 次
3 回答
2
不,内部表示不能像这样改变。解决此问题的唯一方法是为and编写to_s
方法。例如:Float
Fixnum
class Float
def to_s
# your formatting: sprintf("...", self)
end
end
由于您想在 Fixnum 上获得相同的表示,因此您可以将 Fixnum 转换为 Float,然后将该to_s
方法基于to_s
Float 的方法。
class Fixnum
def to_s
self.to_f.to_s
end
end
这样,您可以通过调用to_s
Float获得表示
265424.to_s
=> "2,65424.00"
,或者当您使用插值时:
"When you write it like this #{265424}"
=> "When you write it like this 2,65424.00"
在我看来,这是正确的方法,因为您需要单独表示您的数字。这很好,但是这个单独的表示应该在字符串级别实现,因为如果你想通过形成很好地显示一些东西,那就是字符串的用途。
此外,使用这种猴子修补方法可能会有问题,这取决于您是否要提供库等。如果您只是设计一个专用的格式方法来获取数字并将它们格式化打印出来,也许会很好。
于 2013-09-02T07:51:38.640 回答
1
You can not save float value with ',' as a delimiter in mysql
但是,您可以执行以下操作
"2,65424.00".gsub(',', '').to_f # 265424.0
于 2013-09-02T07:52:15.293 回答
0
尝试将您的字符串对象转换string.to_i
为整数或string.to_f
浮点数。
于 2013-09-02T07:50:39.767 回答