Python:如何在8个小数位中显示字符串

时间:2018-02-14 05:26:56

标签: python string python-3.x numbers discord

很抱歉这个奇怪的标题,但我真的不知道怎么解释这个。基本上,我有这个代码从API中获取,但是,如果数值试图显示低。 (比如说0.0008或更低)它会在最后显示为一堆数字和一个e。

示例:8.888e-5或其他随机内容。

如何将其显示为数字?例如:每个PLSR 0.00084BTC。

(Python 3.6.4)它必须保持为字符串才能工作!

为什么这不是重复:虽然另一个线程找到了我想要的类似答案,但它并没有准确地解释如何将它合并到我已经将其转换为字符串的代码中。我是否只是在将其转换为字符串或...后才覆盖它?

代码:

import requests
import discord
import asyncio

url = 'https://cryptohub.online/api/market/ticker/PLSR/'
response = requests.get(url)
data = response.json()['BTC_PLSR']

client = discord.Client()

@client.event
async def on_ready():
print('Logged in as')
print(client.user.name)
print(client.user.id)
print('------')

price = print('PLSR Price:', data['last'])
pulsar = str(data['last'])

await client.change_presence(game=discord.Game(name="PLSR Price: " + pulsar))

2 个答案:

答案 0 :(得分:2)

你看到的是科学记数法。 8.888e + 2表示8.888x10 2

如果您不喜欢默认设置,则需要使用String Formatting Mini-Language。 Python经历了一些格式化的旋转。以下是一些选项:

>>> value = .000008888  
>>> value                           # default display of small number
8.888e-06
>>> print('%.8f' % value)           # old, deprecated format.
0.00000889
>>> print('{:.8f}'.format(value))   # newer format.
0.00000889
>>> print(f'{value:.8f}')           # newest format in Python 3.6.
0.00000889

请注意,.8f表示"小数点后8位,固定浮点数"。

更多信息:

根据您的评论,您可以使用以下语言格式化科学记数法的字符串:

>>> pulsar = '8.888e+2'
>>> f'PLSR Price: {float(pulsar):.2f}'
'PLSR Price: 888.80'

答案 1 :(得分:0)

当数字变得足够大或足够小时,Python会使用scientific notation引用它们。这并不意味着价值不正确或者很奇怪"它只是以不同的格式显示。

要强制它显示例如8位数字,您需要格式化它才能这样做:

print('%.8f' % value)