Bagaimana saya bisa menampilkan ini:
Desimal ('40800000000.00000000000000') sebagai '4.08E + 10'?
Saya sudah mencoba ini:
>>> '%E' % Decimal('40800000000.00000000000000')
'4.080000E+10'
Tetapi memiliki 0 ekstra itu.
Bagaimana saya bisa menampilkan ini:
Desimal ('40800000000.00000000000000') sebagai '4.08E + 10'?
Saya sudah mencoba ini:
>>> '%E' % Decimal('40800000000.00000000000000')
'4.080000E+10'
Tetapi memiliki 0 ekstra itu.
Jawaban:
Di '40800000000.00000000000000' Anda, ada banyak nol signifikan yang memiliki arti yang sama dengan digit lainnya. Itu sebabnya Anda harus memberi tahu secara eksplisit ke mana Anda ingin berhenti.
Jika Anda ingin menghapus semua nol trailing secara otomatis, Anda dapat mencoba:
sumber
format % values
sintaks masih digunakan bahkan dalam pustaka standar Python 3, saya percaya itu secara teknis ditinggalkan dalam Python 3, atau setidaknya bukan metode format yang direkomendasikan, dan sintaks yang direkomendasikan saat ini, dimulai dengan Python 2.6, akan menjadi'{0:.2E}'.format(Decimal('40800000000.00000000000000'))
( atau'{:.2E}'
dengan Python 2.7+). Meskipun tidak sepenuhnya berguna untuk situasi ini, karena karakter tambahan tanpa fungsi tambahan,str.format
memungkinkan pencampuran / penyusunan ulang / pemanfaatan kembali argumen format yang lebih kompleks.format
. Ini lebih jazzy .Berikut ini contoh menggunakan
format()
fungsi:Alih-alih memformat, Anda juga dapat menggunakan f-string :
dokumentasi resmi
proposal format asli ()
sumber
f"{Decimal('40800000000.00000000000000'):.2E}"
Diberi nomor Anda
Mulai dari Python 3,
adalah cara yang disarankan untuk melakukannya.
e
berarti Anda ingin notasi ilmiah, dan.2
berarti Anda ingin 2 digit setelah titik. Jadi, Anda akan mendapatkannyax.xxE±n
sumber
float(x)
akan mengubah x menjadi float.Tidak ada yang menyebutkan bentuk singkat dari
.format
metode ini:Membutuhkan setidaknya Python 3.6
(Saya percaya itu sama dengan Cees Timmerman, hanya sedikit lebih pendek)
sumber
{num:E}
, di mana misalnya num = 40800000000,00000000000000Lihat tabel dari pemformatan string Python untuk memilih tata letak format yang tepat. Dalam kasus Anda, ini
%.2E
.sumber
Desimal saya terlalu besar untuk
%E
jadi saya harus berimprovisasi:Berikut ini contoh penggunaannya:
sumber
"{:.2e}".format(n)
kembali'3.39e+7800'
dengan Python 3.3.2 (v3.3.2: d047928ae3f6, 16 Mei 2013, 00:06:53) [MSC v.1600 64 bit (AMD64)] di win32.Ini bekerja paling baik untuk saya:
sumber
Ini adalah daftar gabungan dari Jawaban & Komentar "Sederhana" .
PYTHON 3
OR Tanpa
IMPORT
'sPerbandingan
Jadi untuk Python 3, Anda dapat beralih di antara ketiganya untuk saat ini.
Favoritku:
sumber
Saya lebih suka cara Python 3.x.
4
menunjukkan berapa banyak digit yang ditampilkan pada bagian mengambang.sumber
Untuk mengkonversi Desimal menjadi notasi ilmiah tanpa perlu menentukan ketepatan dalam string format, dan tanpa menyertakan nol tambahan, saya saat ini menggunakan
Untuk menjaga angka nol yang tertinggal, cukup hapus
normalize()
.sumber
Ini adalah yang paling sederhana yang bisa saya temukan.
('E' tidak peka huruf besar-kecil. Anda juga dapat menggunakan '.2e')
sumber
sumber