`
jsntghf
  • 浏览: 2476149 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

将数字转成货币形式

F# 
阅读更多

示例一

    class Numeric
      def commify(dec='.', sep=',')
        num = to_s.sub(/\./, dec)
        dec = Regexp.escape dec
        num.reverse.gsub(/(\d\d\d)(?=\d)(?!\d*#{dec})/, "\\1#{sep}").reverse
      end
    end

 

具体示例:

 

puts 1233232423424.23423.commify  # => 1,233,232,423,424.23

 

示例二

    numbers = "10000000 1.345 -91245555.45 +6788876.224334 -2321232"
    numbers.reverse!
    numbers.gsub!(/(\d\d\d)(?=\d)(?!\d*\.)/, '\1,')
    #numbers.gsub!(%r{([[:digit:]]{3})(?=[[:digit:]])(?![[:digit:]]*\.)}, '\1,')
    puts numbers.reverse!  # => 10,000,000 1.345 -91,245,555.45 +6,788,876.224334 -2,321,232

  

示例三

def format(num, delim = ',')
  num.to_s.reverse.gsub(%r{([[:digit:]]{3})(?=[[:digit:]])(?![[:digit:]]*\.)}, "\\1#{delim}").reverse
end

 

具体示例:

 

puts format(1000)  # => 1,000
puts format(123456.78)  # => 123,456.78
puts format("$12345")   # => $12,345
puts format("123456", ".")  # => 123.456

 

示例四

  def ts( st )
    st = st.reverse
    r = ""
    max = if st[-1].chr == '-'
      st.size - 1
    else
      st.size
    end
    if st.to_i == st.to_f
      1.upto(st.size) {|i| r << st[i-1].chr ; r << ',' if i % 3 == 0 and i < max}
    else
      start = nil
      1.upto(st.size) {|i|
        r << st[i-1].chr
        start = 0 if r[-1].chr == '.' and not start
        if start
          r << ',' if start % 3 == 0 and start != 0  and i < max
          start += 1
        end
      }
    end
    r.reverse
  end

 

具体示例:

 

    puts ts('100')  # => 100
    puts ts('1')    # => 1
    puts ts('1000') # => 1,000
    puts ts('1000000.01')  # => 1,000,000.01
    puts ts('100046546510000.022435451')  # => 100,046,546,510,000.022435451
    puts ts('-100')  # => -100
    puts ts('-1')    # => -1
    puts ts('-1000') # => -1,000
    puts ts('-1000000.01')  # => -1,000,000.01
    puts ts('-100046546510000.022435451')  # => -100,046,546,510,000.022435451

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics