[#47173] 小数点以下を切り捨てる方法について — "T.Soejima" <clev@...2.so-net.ne.jp>

お世話になっております。そえじま@勉強中です。

16 messages 2010/06/23

[ruby-list:47175] 金額を漢字フォーマット 億, 千, 万

From: 久保田竜自 <dev@...>
Date: 2010-06-23 09:56:28 UTC
List: ruby-list #47175
こんにちは。久保田と申します

数値を以下のようなフォーマットで表示したいと考えています。

100 #=> "100円"
100000500 #=> "1億500円"
123456789 #=> "1億2,345万6,789円"

subを連打する以下のコードで、期待どおりの動作を得ることはできましたが、
もっとスマートな方法をご存知の方はいらっしゃいませんか?

n.to_s.
sub(/([1-9]\d{0,3})(\d{12})$/, '\1兆\2').
sub(/([1-9]\d{0,3})(\d{8})$/, '\1億\2').
sub(/([1-9]\d{0,3})(\d{4})$/, '\1万\2').
gsub(/(\D)0+/, '\1').
sub(/$/, '円').
gsub(/(\d)(?=(?:\d\d\d)+(?!\d))/, '\1,') # 数字をカンマ区切り


正規表現が上手い方のご意見を伺えたら嬉しく思います。
よろしくおねがい致します。

In This Thread