加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python货币格式化功能实例

发布时间:2020-12-17 07:11:43 所属栏目:Python 来源:网络整理
导读:对python这个高级语言感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧! python开发中时长到货币格式化的问题,一般情况下可以使用locale模块。但是这个模块使用起来不是那么顺手,今天我为大家介绍一个很好用的方法。 直接上代码。。。 f
对python这个高级语言感兴趣的小伙伴,下面一起跟随编程之家 52php.cn的小编两巴掌来看看吧!

python开发中时长到货币格式化的问题,一般情况下可以使用locale模块。但是这个模块使用起来不是那么顺手,今天我为大家介绍一个很好用的方法。

直接上代码。。。


from decimal import *
def moneyfmt(value,places=2,curr='',sep=',',dp='.',pos='',neg='-',trailneg=''):
    """Convert Decimal to a money formatted string.
 
    places:  required number of places after the decimal point
    curr:    optional currency symbol before the sign (may be blank)
    sep:     optional grouping separator (comma,period,space,or blank)
    dp:      decimal point indicator (comma or period)
             only specify as blank when places is zero
    pos:     optional sign for positive numbers: '+',space or blank
    neg:     optional sign for negative numbers: '-','(',space or blank
    trailneg:optional trailing minus indicator:  '-',')',space or blank
 
    >>> d = Decimal('-1234567.8901')
    >>> moneyfmt(d,curr='$')
    '-$1,234,567.89'
    >>> moneyfmt(d,places=0,sep='.',dp='',neg='',trailneg='-')
    '1.234.568-'
    >>> moneyfmt(d,curr='$',neg='(',trailneg=')')
    '($1,567.89)'
    >>> moneyfmt(Decimal(123456789),sep=' ')
    '123 456 789.00'
    >>> moneyfmt(Decimal('-0.02'),neg='<',trailneg='>')
    '<0.02>'
 
    """
    value = Decimal(value)
    q = Decimal(10) ** -places      # 2 places --> '0.01'
    sign,digits,exp = value.quantize(q).as_tuple()
    result = []
    digits = map(str,digits)
    build,next = result.append,digits.pop
    if sign:
        build(trailneg)
    for i in range(places):
        build(next() if digits else '0')
    build(dp)
    if not digits:
        build('0')
    i = 0
    while digits:
        build(next())
        i += 1
        if i == 3 and digits:
            i = 0
            build(sep)
    build(curr)
    build(neg if sign else pos)
    return ''.join(reversed(result))
 
print moneyfmt('1234.45',dp='.')

# End www.52php.cn

结果:

1,234.45

很简单吧。。。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读