Saya ingin menampilkan:
49
sebagai 49.00
dan:
54.9
sebagai 54.90
Terlepas dari panjang desimal atau apakah ada tempat desimal, saya ingin menampilkan a Decimal
dengan 2 tempat desimal, dan saya ingin melakukannya dengan cara yang efisien. Tujuannya adalah untuk menampilkan nilai uang.
misalnya, 4898489.00
python
string-formatting
orokusaki
sumber
sumber
Jawaban:
Saya kira Anda mungkin menggunakan
Decimal()
objek daridecimal
modul? (Jika Anda membutuhkan tepat dua digit presisi di luar titik desimal dengan angka besar yang sewenang-wenang, Anda tentu harus, dan itulah yang disarankan judul pertanyaan Anda ...)Jika demikian, bagian FAQ Desimal pada dokumen memiliki pasangan pertanyaan / jawaban yang mungkin berguna bagi Anda:
Pertanyaan selanjutnya berbunyi
Jika Anda memerlukan jawaban untuk itu (bersama dengan banyak informasi berguna lainnya), lihat bagian dokumen yang disebutkan di atas . Juga, jika Anda menjaga
Decimal
angka Anda dengan dua digit presisi di luar titik desimal (artinya sebanyak yang diperlukan untuk menjaga semua angka di sebelah kiri titik desimal dan dua di sebelah kanannya dan tidak lebih ...), kemudian mengonversinya menjadi stringstr
akan bekerja dengan baik:sumber
Anda harus menggunakan spesifikasi format baru untuk menentukan bagaimana nilai Anda harus diwakili:
Dokumentasi bisa agak tumpul kadang-kadang, jadi saya merekomendasikan referensi berikut yang lebih mudah dibaca:
.format()
string format%
tali format dengan gaya baru.format()
string formatPython 3.6 memperkenalkan interpolasi string literal (juga dikenal sebagai f-string) jadi sekarang Anda dapat menulis di atas bahkan lebih ringkas sebagai:
sumber
format
mengembalikanstr
, bukanfloat
:print type({0:.2f}".format(pi))
pengembalian<type 'str'>
.return
. Harap ubah secara mental keprint
s."{:.2f}".format(pi)
0:
dilakukan? Saya berasumsi.
ini adalah bagian dari string pythonBagian Operasi Pemformatan String dari dokumentasi Python berisi jawaban yang Anda cari. Pendeknya:
Beberapa contoh:
sumber
0
setelah%
, dan tidak perlu bungkusnum
dalamtuple
.r = 1; "%s" % r; r = (1, 2); "%s" % r
versusr = 1; "%s" % (r,); r = (1,2 ); "%s" % (r,)
. Dengan demikian, gaya pengkodean paling canggih dalam python menggunakan tuple tanpa syarat sekarang (dan Python 3 mencabut seluruh metode pemformatan string sebagai rawan kesalahan).Anda dapat menggunakan operator pemformatan string :
Saya tidak yakin apa yang Anda maksud dengan "efisien" - ini hampir pasti bukan hambatan aplikasi Anda. Jika program Anda berjalan lambat, buat profil dulu untuk menemukan hot spot, lalu optimalkan.
sumber
Anda dapat mengubah
2
dalam2f
ke sejumlah titik desimal yang ingin ditampilkan.EDIT:
Dari
Python3.6
, ini diterjemahkan menjadi:sumber
.format adalah cara yang lebih mudah dibaca untuk menangani pemformatan variabel:
sumber
Dalam python 3, cara melakukan ini adalah
sumber
jika Anda memiliki beberapa parameter yang dapat Anda gunakan
sumber
Jika Anda menggunakan ini untuk mata uang, dan juga ingin nilai dipisahkan oleh
,
Anda dapat menggunakan$ {:,.f2}.format(currency_value)
.misalnya:
currency_value = 1234.50
$ {:,.f2}.format(currency_value)
-->
$ 1,234.50
Ini sedikit kode yang saya tulis beberapa waktu lalu:
print("> At the end of year " + year_string + " total paid is \t$ {:,.2f}".format(total_paid))
sumber
Contoh cara termudah untuk menunjukkan kepada Anda bagaimana melakukannya adalah:
Kode:
>>> points = 19.5
>>> total = 22
>>>'Correct answers: {:.2%}'.format(points/total)
`Output: Jawaban yang benar: 88,64%
sumber
bagaimana dengan
sumber