Отобразить десятичную дробь в экспоненциальном представлении

Как я могу отобразить это:

Десятичное ('40800000000.00000000000000') как '4.08E + 10'?

Я пробовал это:

>>> '%E' % Decimal('40800000000.00000000000000')
'4.080000E+10'

Но там есть лишние нули.

142
задан LondonRob 23 July 2015 в 12:50
поделиться

1 ответ

Это - объединенный список "Простой" Ответы & Комментарии.

Python 3

from decimal import Decimal

x = '40800000000.00000000000000'
# Converted to Float
x = Decimal(x)

# ===================================== # `Dot Format`
print("{0:.2E}".format(x))
# ===================================== # `%` Format
print("%.2E" % x)
# ===================================== # `f` Format
print(f"{x:.2E}")
# =====================================
# ALL Return: 4.08E+10
print((f"{x:.2E}") == ("%.2E" % x) == ("{0:.2E}".format(x)))
# True
print(type(f"{x:.2E}") == type("%.2E" % x) == type("{0:.2E}".format(x)))
# True
# =====================================

ИЛИ Без IMPORT

# NO IMPORT NEEDED FOR BASIC FLOATS
y = '40800000000.00000000000000'
y = float(y)

# ===================================== # `Dot Format`
print("{0:.2E}".format(y))
# ===================================== # `%` Format
print("%.2E" % y)
# ===================================== # `f` Format
print(f"{y:.2E}")
# =====================================
# ALL Return: 4.08E+10
print((f"{y:.2E}") == ("%.2E" % y) == ("{0:.2E}".format(y)))
# True
print(type(f"{y:.2E}") == type("%.2E" % y) == type("{0:.2E}".format(y)))
# True
# =====================================

Сравнение

# =====================================
x
# Decimal('40800000000.00000000000000')
y
# 40800000000.0

type(x)
# <class 'decimal.Decimal'>
type(y)
# <class 'float'>

x == y
# True
type(x) == type(y)
# False

x
# Decimal('40800000000.00000000000000')
y
# 40800000000.0

Так для Python 3, можно переключиться между любым из трех на данный момент.

Мой Fav:

print("{0:.2E}".format(y))
1
ответ дан 23 November 2019 в 23:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: