尝试对包含逗号的字符串进行四舍五入[python]

尝试对包含逗号的字符串进行四舍五入[python],python,string,Python,String,我正在为reddit制作一个价格表。一切都很正常,但它从中获取价格的API有4位小数,其中有一个逗号分隔千位 我只是想弄清楚如何将数字四舍五入到2位小数或整数。到目前为止,我已经尝试了round()函数,但由于逗号的原因,该函数不起作用。我可以删除逗号,但它仍然不允许我使用round函数 def main(self): req = requests.get('https://api.coindesk.com/v1/bpi/currentprice.json') req = req

我正在为reddit制作一个价格表。一切都很正常,但它从中获取价格的API有4位小数,其中有一个逗号分隔千位

我只是想弄清楚如何将数字四舍五入到2位小数或整数。到目前为止,我已经尝试了round()函数,但由于逗号的原因,该函数不起作用。我可以删除逗号,但它仍然不允许我使用round函数

def main(self):
    req = requests.get('https://api.coindesk.com/v1/bpi/currentprice.json')
    req = req.json()
    dollar = '1 BTC = $' + req['bpi']['USD']['rate'].replace(',' , '')

有什么想法吗?

也许这可以为你指明正确的方向

# Original String
val_string = '19,9999'

# Replace Comma with Decimal
val_string_decimal = val_string.replace(',','.')

# Convert String to Float
val = float(val_string_decimal)

# Print Float after rounding to 2 decimal places
print(round(val, 2)) 

您没有指定是否要在四舍五入后重新插入逗号。试试这个:

# dummy number
str_num = "4,000.8675"
# first, remove the comma
str_num_no_comma = str_num.replace(",","")
# then, convert to float, and then round
strm_num_as_num = round(float((str_num_no_comma)))
print(strm_num_as_num)
>>> 4001.0

当然,如果想完全忽略小数点,可以将其转换为
int

在python中处理这样的数字时,通常应该使用decimal类-

>>> from decimal import Decimal
>>> t = '4,700.3245'
>>> Decimal(t.replace(',', '')).quantize(Decimal('1.00'))
Decimal('4700.32')

quantize是十进制对象的“舍入”函数-它将舍入到与作为参数传递的十进制对象相同的小数位数。

Did。。。在调用
round
之前,您是否将字符串转换为数字?请告诉我们您是如何尝试使用round函数的--您给定的代码不会尝试此操作。您希望
美元的最终值为字符串吗?