0

私は次のものを持っています:

{: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 は何らかの理由で を と見なしています) ,.

数値を文字列とまったく同じにしたいのですが、代わりに数値として:"Birds"=>16,414

それを達成する方法は?

4

3 に答える 3

2

ただの通知:

to_f を実行すると、16.0 のような結果が得られます (ご覧のとおり、Ruby は何らかの理由で , を . と見なしています)。

,Ruby はを としてまったく扱っていません.。もしそうなら、結果のフロートは16.414and notになり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
于 2013-08-14T06:39:55.133 に答える