我正在为报价进行价格报价。一切工作正常,但从中得出价格的API的小数点后四个位,逗号分隔成千位数。
我只是想弄清楚如何将数字四舍五入到小数点后两位或整数。到目前为止,我已经尝试了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(',' , '')
有什么想法吗?
答案 0 :(得分:1)
也许这可以为您指明正确的方向!
# 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))
答案 1 :(得分:1)
在玩这样的数字时,通常应在python中使用Decimal类-
>>> from decimal import Decimal
>>> t = '4,700.3245'
>>> Decimal(t.replace(',', '')).quantize(Decimal('1.00'))
Decimal('4700.32')
quantize是Decimal对象的“舍入”功能-它将舍入到与作为参数传递的Decimal对象相同的小数位数。
答案 2 :(得分:0)
您未指定四舍五入后是否要重新插入逗号。试试这个:
# 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
。