Ini kode saya:
x = 1.0
y = 100000.0
print x/y
Hasil bagi saya ditampilkan sebagai 1.00000e-05
.
Apakah ada cara untuk menekan notasi ilmiah dan membuatnya ditampilkan sebagai
0.00001
? Saya akan menggunakan hasilnya sebagai string.
Ini kode saya:
x = 1.0
y = 100000.0
print x/y
Hasil bagi saya ditampilkan sebagai 1.00000e-05
.
Apakah ada cara untuk menekan notasi ilmiah dan membuatnya ditampilkan sebagai
0.00001
? Saya akan menggunakan hasilnya sebagai string.
Jawaban:
tetapi Anda perlu mengatur sendiri presisi. misalnya,
hanya akan menampilkan angka nol.
Rinciannya ada di dokumen
Atau untuk Python 3 , pemformatan lama yang setara atau pemformatan gaya yang lebih baru
sumber
Menggunakan versi yang lebih baru
''.format
(juga ingat untuk menentukan berapa digit setelah.
Anda ingin ditampilkan, ini tergantung pada seberapa kecil angka mengambang). Lihat contoh ini:seperti yang ditunjukkan di atas, standarnya adalah 6 digit! Ini tidak membantu untuk contoh kasus kami, jadi alih-alih kami dapat menggunakan sesuatu seperti ini:
Memperbarui
Mulai dengan Python 3.6, ini dapat disederhanakan dengan string literal yang diformat , sebagai berikut:
sumber
f"{a:.{precision}f}"
Dengan versi Python yang lebih baru (2.6 dan yang lebih baru), Anda dapat menggunakan
''.format()
untuk mencapai apa yang disarankan @SilentGhost:sumber
>>> print('{:f}'.format(0.000000123))
0.000000
'{0:.10f}'
Opsi lain, jika Anda menggunakan panda dan ingin menekan notasi ilmiah untuk semua pelampung, adalah menyesuaikan opsi panda.
sumber
Sebagian besar jawaban di atas mengharuskan Anda menentukan ketepatan. Tetapi bagaimana jika Anda ingin menampilkan pelampung seperti ini, tanpa nol yang tidak perlu:
numpy
punya jawaban:np.format_float_positional
sumber
Ini akan bekerja untuk eksponen apa pun:
sumber
Ini menggunakan jawaban Captain Cucumber , tetapi dengan 2 tambahan.
1) memungkinkan fungsi untuk mendapatkan nomor notasi non ilmiah dan hanya mengembalikannya apa adanya (sehingga Anda dapat membuang banyak input bahwa beberapa angka adalah 0,00003123 vs 3,123e-05 dan masih memiliki fungsi berfungsi.
2) menambahkan dukungan untuk angka negatif. (dalam fungsi asli, angka negatif akan berakhir seperti 0,0000-108904 dari -1.08904e-05)
sumber
Selain jawaban SG, Anda juga dapat menggunakan modul Desimal:
sumber
Jika a
string
maka gunakan bawaanfloat
untuk melakukan konversi misalnya:print( "%.5f" % float("1.43572e-03"))
answer:0.00143572
sumber
Karena ini adalah hasil teratas di Google, saya akan memposting di sini setelah gagal menemukan solusi untuk masalah saya. Jika Anda ingin memformat nilai tampilan objek float dan membuatnya tetap float - bukan string, Anda dapat menggunakan solusi ini:
Buat kelas baru yang mengubah cara nilai float ditampilkan.
Anda dapat memodifikasi sendiri presisi dengan mengubah nilai integer di
{:f}
sumber
Menggunakan 3.6.4, saya mengalami masalah serupa yang secara acak, nomor dalam file output akan diformat dengan notasi ilmiah saat menggunakan ini:
Yang harus saya lakukan untuk memperbaikinya adalah menambahkan 'f':
sumber
Pada 3,6 (mungkin bekerja dengan 3.x sedikit lebih tua juga), ini adalah solusi saya:
Tujuan dari
precision
perhitungan ini adalah untuk memastikan kami memiliki cukup presisi untuk menghindari notasi ilmiah (presisi default masih 6).The
dec_precision
Argumen menambahkan presisi tambahan untuk menggunakan untuk poin desimal. Karena ini menggunakann
format, tidak ada nol yang tidak signifikan akan ditambahkan (tidak sepertif
format).n
juga akan menangani rendering bilangan bulat yang sudah bulat tanpa desimal.n
memang membutuhkanfloat
input, sehingga pemain.sumber