Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将浮动转换为美元和美分_Python_Python 3.x_Floating Point_String Formatting_Currency - Fatal编程技术网

Python 将浮动转换为美元和美分

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

首先,我试过这篇文章(除其他外):。它对我的变量没有影响。我最好的猜测是,这是因为我使用的是Python3,而这是Python2的代码。(除非我忽略了什么,因为我是Python新手)

我想将浮点数(如1234.5)转换为字符串(如“$1234.50”)。我该怎么做呢?

为了以防万一,这里是我编译的代码,但不会影响我的变量:

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'])]