Module: ToChitanda::Kansuuji
Constant Summary collapse
- KANJI_NUMBERS =
%w(〇 一 二 三 四 五 六 七 八 九)
- LOWER_RANKS =
[nil] + %w(十 百 千)
- UPPER_RANKS =
[nil] + %w(万 億 兆)
- MAX_NUMBER =
1_0000_0000_0000_0000
Instance Method Summary collapse
Instance Method Details
#kansuuji(number) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/to_chitanda/kansuuji.rb', line 12 def kansuuji(number) raise ArgumentError, "can't calculate negative number" if number < 0 raise ArgumentError, "can't calculate gte #{MAX_NUMBER}" if number >= MAX_NUMBER return KANJI_NUMBERS[0] if number == 0 ranks = UPPER_RANKS.dup results = [] while number > 0 number, lower = number.divmod(10000) results << "#{kansuuji_lower(lower, ranks.shift)}" end results.reverse.join end |