|
Versions Of This Snippet::
Download a raw-text version of this code by clicking on "Download Version"
Latest Snippet Version: :0.1
# To change this template, choose Tools | Templates
# and open the template in the editor.
# 0 零 1 一 2 二 三 四 五六七八九十 百 千 万 亿 兆(10000亿)
# 1234_5678 一千万二百三十四万五千六百七十八
# 12303_0408 一亿二千三百零三万四百零八
# 汉语里,是万 亿 兆,5位来划分一个大的数字,四位为一个集合十百千万
# =>万:代表的是10的四次方。
#亿:代表的是10的八次方。
#
#兆:代表的是10的十二次方。
#
#京:代表的是10的十六次方。
#
#垓:代表的是10的二十次方。
#
#杼:代表的是10的二十四次方。
#
#穰:代表的是10的二十八次方。
#
#沟:代表的是10的三十二次方。
#
#涧:代表的是10的三十六次方。
#
#正:代表的是10的四十次方。
#
#载:代表的是10的四十四次方。
#
#极:代表的是10的四十八次方。
#
#恒河沙:代表的是10的五十二次方。
#
#阿僧□:代表的是10的五十六次方。
#
#那由它:代表的是10的六十次方。
#
#不可思议:代表的是10的六十四次方。
#
#无量:代表的是10的六十八次方。
#
#大数:代表的是10的七十二次方。
class String
def each_char
if block_given?
scan(/./m) do |x|
yield x
end
else
scan(/./m)
end
end
end
class Integer
#解决办法:将数字分为四个为一组的二维数组(倒置)(1234567-[[7654],[321]])
def to_ch()
#先将数字分成已四个数字为一组
small_nums = %w[零 一 二 三 四 五 六 七 八 九 ]
digit = %w['' 十 百 千]
big_digit = %w[万 亿 兆 京 垓 杼 穰 沟 涧 正 载 极 恒河沙 阿僧□ 那由它 不可思议 无量 大数]
nums = self.to_s.each_char
nums.reverse!
#rh = {},本来用的是hash,所以后面肯定会出错,
#hash是无序的,他只是几个集合,而数组是有序的,按照索引排列
rh = []
temp = []
j = 0
p nums
nums.each_index do |i|
temp << nums[i].to_i
if temp.size == 4
rh << temp.clone
temp.clear
j += 1
end
end
ch_num = ""
rh << temp.clone if !temp.empty?
p rh
#分析数组,并解析为汉字
rh.each_index do |key|
value = rh[key]
value.each_index do |i|
digits = ""
digits = digit[i].to_s if i > 0
if value[i] != 0
value[i] = small_nums[value[i]].to_s + digits
end
end
if key > 0
four_num = del_zero(value.reverse!.to_s)
#bd = big_digit[(key-1)%3] #万亿兆也需要循环,不然数字超过兆是就出错了!
#判断如果超过亿,并且万上没有数字,万要去掉;还有就是超过兆之后,兆前面没有数字,
#并超过了万,这是时是万兆,这是兆是不能去的!
bd = big_digit[key-1]
if four_num == '' && rh[key + 1] != nil
bd = ''
end
ch_num = four_num + bd + ch_num if bd != ""
else
ch_num = del_zero(value.reverse!.to_s) + ch_num
end
end
return ch_num
end
#将字符串重复的零为一个零,在将结尾的零去掉
def del_zero(v)
v.squeeze("0").gsub(/0/,"零").sub(/零$/,'')
end
end
c = 1010_0200.to_ch()
puts c
d = 11_0000_0000_0000_0001_0001_1234.to_ch();
puts d
Submit a new versionYou can submit a new version of this snippet if you have modified it and you feel it is appropriate to share with others..
|
||||||||||||||||||||||||||
