人民币大写格式化

conf/initializers/float.rb

# encoding: utf-8
class Float
Numbers = {"0" => "零", "1" => "壹", "2" => "贰", "3" => "叁", "4" => "肆", "5" => "伍", "6" => "陆", "7" => "柒", "8" => "捌", "9" => "玖"}
Positions = {"0" => "元", "1" => "拾", "2" => "佰", "3" => "仟", "4" => "万", "5" => "拾", "6" => "佰", "7" => "仟", "8" => "亿", "9" => "拾","10" => "佰", "11" => "仟"}
Fraction = {"0" => "角", "1" => "分"}
def to_zh

first_nu,last_nu = abs.to_s.split(".")
raise "小数点必须保留两位" if last_nu.length > 2
raise "单位必须小于或等于(亿)" if first_nu.length > 11

ary = []
fraction = []
num_to_zh = first_nu.reverse.split('').collect{|s| Numbers[s.to_s]}

num_to_zh.each_with_index{|x,v| ary.unshift(x == "零" ? ( v == 4 ? "万" : v == 8 ? "亿" : "零") : [x ,Positions[v.to_s]])}

last_nu.split('').each_with_index{|m,o| fraction << [Numbers[m.to_s],Fraction[o.to_s]]}


(self < 0 ? "负" : "") + (ary.join.gsub(/零+/,"零").gsub(/零亿/,"亿零").gsub(/零万/,"万零").gsub(/零+/,"零").gsub(/零$/,"元") + (last_nu == "0" ? "整" : fraction.join.gsub(/零角/,"零")))
end
end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值