我有以下内容:
{:department=>{"Pet Supplies"=>{"Birds"=>"16,414", "Cats"=>"243,384",
"Dogs"=>"512,186", "Fish & Aquatic Pets"=>"47,018",
"Horses"=>"14,749", "Insects"=>"359", "Reptiles &
Amphibians"=>"5,794", "Small Animals"=>"19,797"}}}
现在如果我使用to_i
我会说16.如果我to_f
我得到类似16.0的东西(正如你所看到的,Ruby正在考虑将,
视为{{1}由于某种原因)。
我希望数字与字符串完全相同,而不是数字:.
如何做到这一点?
答案 0 :(得分:2)
只是一个通知:
如果我这样做__f我得到类似16.0的东西(正如你可以看到Ruby正在考虑,因为某种原因)。
Ruby根本没有将,
视为.
。如果它产生的浮点数将是16.414
而不是16.0
。 Ruby只是注意到无关的字符并决定忽略,414
。
如何做到这一点?
如果您希望将16,414
转换为16414
,那么没有什么比删除字符更简单了:
str = '16,414'
str.delete(',').to_i
# => 16414
在某些文化中,,
被视为浮点数。在这种情况下,如果您想要返回16.414
,则可以将,
转换为.
并转换为Float
:
str = '16,414'
str.gsub(/,/, '.').to_f
# => 16.414
答案 1 :(得分:1)
尝试以下内容:
"16,414".gsub(",","_").to_i
# => 16414
或(建议 @Chris Heald )
"19,797".delete(",").to_i
# => 19797
答案 2 :(得分:1)
正如你所看到的,Ruby正在考虑将其作为一个。由于某种原因
是的,这一切都让人很困惑:
class String
to_i(base = 10)→整数
返回将str中的前导字符解释为的结果 整数基数(2到36之间)。过去的外来人物 有效数字的结尾将被忽略。
to_f→float
返回将str中的前导字符解释为a的结果 浮点数。超出有效的结尾的无关字符 数字被忽略。
ruby文档是公开的。他们不是秘密。实际上,您可能在计算机上安装了文档。试试这个:
$ ri String#to_i