Python 将浮动转换为美元和美分
首先,我试过这篇文章(除其他外):。它对我的变量没有影响。我最好的猜测是,这是因为我使用的是Python3,而这是Python2的代码。(除非我忽略了什么,因为我是Python新手) 我想将浮点数(如1234.5)转换为字符串(如“$1234.50”)。我该怎么做呢? 为了以防万一,这里是我编译的代码,但不会影响我的变量:Python 将浮动转换为美元和美分,python,python-3.x,floating-point,string-formatting,currency,Python,Python 3.x,Floating Point,String Formatting,Currency,首先,我试过这篇文章(除其他外):。它对我的变量没有影响。我最好的猜测是,这是因为我使用的是Python3,而这是Python2的代码。(除非我忽略了什么,因为我是Python新手) 我想将浮点数(如1234.5)转换为字符串(如“$1234.50”)。我该怎么做呢? 为了以防万一,这里是我编译的代码,但不会影响我的变量: money = float(1234.5) locale.setlocale(locale.LC_ALL, '') locale.currency(money, groupi
money = float(1234.5)
locale.setlocale(locale.LC_ALL, '')
locale.currency(money, grouping=True)
也不成功:
money = float(1234.5)
print(money) #output is 1234.5
'${:,.2f}'.format(money)
print(money) #output is 1234.5
在Python 3.x和2.7中,您可以简单地执行以下操作:
>>> '${:,.2f}'.format(1234.5)
'$1,234.50'
:,
添加了一个逗号作为千位分隔符,.2f
将字符串限制在小数点后两位(或者根据具体情况添加足够多的零以达到小数点后两位)。以@JustinBarber的示例为基础,注意@eric.frederich的注释,如果要设置负值,如-$1000.00
,而不是$-1000.00
,并且不想使用区域设置
:
def as_currency(amount):
if amount >= 0:
return '${:,.2f}'.format(amount)
else:
return '-${:,.2f}'.format(-amount)
在python 3中,您可以使用:
import locale
locale.setlocale( locale.LC_ALL, 'English_United States.1252' )
locale.currency( 1234.50, grouping = True )
输出
'$1,234.50'
你说:
`mony = float(1234.5)
print(money) #output is 1234.5
'${:,.2f}'.format(money)
print(money)
不起作用。。。。
你是这样编码的吗?
这应该是可行的(请看一点区别):
就我个人而言,我更喜欢这一点(当然,这只是编写当前选定的“最佳答案”的另一种方式): 或者,如果您确实不喜欢“添加”多个字符串来组合它们,您可以这样做:
money = float(1234.5)
print('${0}'.format(format(money, ',.2f')))
我只是觉得这两种风格都更容易阅读。:-)
(当然,您也可以像Eric建议的那样合并If-Else来处理负值)“${:,.2f}”。money=float(1234.5)之后的格式(money)没有影响。我犯了错误吗?@Evorlor是的,这在Python 3.3和2.7中都适用。您是否将钱分配给需要打印的变量?是的,我分配了,并且已经通过在之前和之后打印钱来确认,这对负值不起作用${:,.2f}.format(-2)返回'$-2.00'。currency(-2,grouping=True)返回“-$2.00”。只需导入locale并调用locale.setlocale(locale.LC_ALL“”)locale即可工作,但在python3中也可以工作:`(money后一个选项在Python2.7和3.3中都有效。正如您的回答中所讨论的,您的代码似乎不起作用。您可以发布更多的上下文吗?我发布了更新的版本。有什么想法吗?啊,您需要将money(或一个新变量)分配给“${:,.2f}”。format(money)。例如,尝试money='${:,.2f}'。format(money),然后打印钱。很好…这让我想到了在没有def的情况下做这件事…布尔切片…{}${:,.2f}.format([“”,“-”][amount
locale.setlocale(locale.LC_ALL,'en_US'))
@bparker看起来Windows没有遵循POSIX标准。我之前的评论是针对linux/mac的。很抱歉,我忘了提到这个细节。
money = float(1234.5)
print('$' + format(money, ',.2f'))
money = float(1234.5)
print('${0}'.format(format(money, ',.2f')))
df_buy['BUY'] = df_buy['BUY'].astype('float')
df_buy['BUY'] = ['€ {:,.2f}'.format(i) for i in list(df_buy['BUY'])]