Jak mogę to wyświetlić:
Dziesiętny („40800000000,00000000000000”) jako „4,08E + 10”?
Próbowałem tego:
>>> '%E' % Decimal('40800000000.00000000000000')
'4.080000E+10'
Ale ma te dodatkowe zera.
Jak mogę to wyświetlić:
Dziesiętny („40800000000,00000000000000”) jako „4,08E + 10”?
Próbowałem tego:
>>> '%E' % Decimal('40800000000.00000000000000')
'4.080000E+10'
Ale ma te dodatkowe zera.
Odpowiedzi:
W Twojej „40800000000.00000000000000” znajduje się o wiele więcej znaczących zer, które mają takie samo znaczenie, jak każda inna cyfra. Dlatego musisz wyraźnie powiedzieć, gdzie chcesz się zatrzymać.
Jeśli chcesz automatycznie usunąć wszystkie końcowe zera, możesz spróbować:
źródło
format % values
składnia jest nadal używana nawet w standardowej bibliotece Python 3, uważam, że jest technicznie przestarzała w Pythonie 3, a przynajmniej nie jest zalecaną metodą formatowania, a obecna zalecana składnia, począwszy od Pythona 2.6, to'{0:.2E}'.format(Decimal('40800000000.00000000000000'))
( lub'{:.2E}'
w Pythonie 2.7+). Chociaż nie jest to ściśle przydatne w tej sytuacji, ze względu na dodatkowe znaki bez dodatkowej funkcjonalności,str.format
pozwala na bardziej złożone mieszanie / przestawianie / ponowne wykorzystanie formatów argumentów.format
. Jest bardziej jazzy .Oto przykład wykorzystujący
format()
funkcję:Zamiast formatowania możesz również użyć f-stringów :
oficjalna dokumentacja
oryginalna propozycja formatu ()
źródło
f"{Decimal('40800000000.00000000000000'):.2E}"
Biorąc pod uwagę twój numer
Począwszy od Pythona 3,
jest zalecanym sposobem, aby to zrobić.
e
oznacza, że potrzebujesz notacji naukowej, a.2
po kropce chcesz mieć 2 cyfry. Więc dostanieszx.xxE±n
źródło
float(x)
zamieni x na float.Nikt nie wspomniał o krótkiej formie
.format
metody:Wymaga przynajmniej Pythona 3.6
(Myślę, że jest taki sam jak Cees Timmerman, tylko trochę krótszy)
źródło
{num:E}
, gdzie np. Num = 40800000000.00000000000000Zobacz tabele z formatowania ciągów Pythona, aby wybrać odpowiedni układ formatu. W twoim przypadku to jest
%.2E
.źródło
Moje liczby dziesiętne są za duże,
%E
więc musiałem improwizować:Oto przykład użycia:
źródło
"{:.2e}".format(n)
powraca'3.39e+7800'
w Pythonie 3.3.2 (v3.3.2: d047928ae3f6, 16 maja 2013, 00:06:53) [MSC v.1600 64 bit (AMD64)] na win32.To zadziałało najlepiej dla mnie:
źródło
To jest skonsolidowana lista „prostych” odpowiedzi i komentarzy.
PYTHON 3
Lub bez
IMPORT
„sPorównywanie
W przypadku Pythona 3 możesz teraz przełączać się między dowolnym z trzech.
Mój ulubiony:
źródło
Wolę sposób Pythona 3.x.
4
wskazuje, ile cyfr jest wyświetlanych w części pływającej.źródło
Aby przekonwertować notację dziesiętną na notację naukową bez konieczności określania dokładności w ciągu formatu i bez uwzględniania końcowych zer, obecnie używam
Aby zachować końcowe zera, po prostu usuń
normalize()
.źródło
Oto najprostszy, jaki udało mi się znaleźć.
(„E” nie rozróżnia wielkości liter. Możesz też użyć „.2e”)
źródło
źródło