Обработка десятичных значений Python - PullRequest
0 голосов
/ 10 мая 2018

Как обрабатываются числа с плавающей запятой в python. Я использую простой бот Telegram.

import telegram

value=0.0000023
bot.send_message(chat_id=chat_id, text=value)

Я получаю 2.3e-06. Даже печать также дает 2.3e-06. Как мне получить 0.0000023. Как я могу обработать десятичные значения по крайней мере до 20 нулей.

1 Ответ

0 голосов
/ 10 мая 2018

Так что вы можете просто использовать format и указать, что вам нужно 20 знаков после запятой, но это будет довольно уродливо.

>>> format(2.3e-06, ".20f")
'0.00000230000000000000'

Но вы можете использовать эту строку, а затем очистить все нули с правой стороны, используя rstrip

>>> format(2.3e-06, ".20f").rstrip("0")
'0.0000023'
>>> format(2.3e-16, ".20f").rstrip("0")
'0.00000000000000023'

Тогда остается толькоВыясните, если число меньше 10 ^ -20, и если это так, просто распечатайте его, используя обычное экспоненциальное форматирование, которое Python все равно сделает.

def format_for_up_to_n_decimal_places(num, n_decimal_places):
    if num < 10**-n_decimal_places:
        return str(num)
    else:
        return format(num, ".{}f".format(n_decimal_places)).rstrip('0')

Пример:

>>> format_for_up_to_n_decimal_places(2.3e-6, 20)
'0.0000023'
>>> format_for_up_to_n_decimal_places(2.3e-50, 20)
'2.3e-50'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...