Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Memotong Nilai Terapung ke Nombor Khusus Tempat Perpuluhan dalam Python tanpa Pembundaran?

Bagaimana untuk Memotong Nilai Terapung ke Nombor Khusus Tempat Perpuluhan dalam Python tanpa Pembundaran?

Susan Sarandon
Lepaskan: 2024-11-06 00:25:02
asal
411 orang telah melayarinya

How to Truncate Float Values to a Specific Number of Decimal Places in Python without Rounding?

Cara Memotong Nilai Apungan kepada Nombor Khusus Tempat Perpuluhan

Dalam Python, anda boleh mengalih keluar digit daripada apungan untuk mencapai tetap bilangan digit selepas titik perpuluhan. Pertimbangkan contoh berikut:

1.923328437452 → 1.923
Salin selepas log masuk

Pemotongan apungan kepada tiga tempat perpuluhan menghasilkan output yang diingini sebanyak 1.923.

Penyelesaian

Fungsi di bawah melaksanakan tugas ini:

def truncate(f, n):
    '''Truncates/pads a float f to n decimal places without rounding'''
    s = '{}'.format(f)
    if 'e' in s or 'E' in s:
        return '{0:.{1}f}'.format(f, n)
    i, p, d = s.partition('.')
    return '.'.join([i, (d+'0'*n)[:n]])
Salin selepas log masuk

Penjelasan

Fungsi menukar apungan kepada perwakilan rentetan, membahagikannya kepada tiga bahagian: bahagian integer, titik perpuluhan , dan bahagian pecahan. Ia kemudiannya meletakkan bahagian pecahan dengan sifar sehingga bilangan tempat perpuluhan yang ditentukan, memastikan bahawa sebarang digit lebihan dipotong.

Mengendalikan Notasi Saintifik

Fungsi menyemak sama ada apungan diwakili dalam tatatanda saintifik (e atau E) dan menggunakan fungsi format yang berbeza untuk mengekalkan eksponen.

Versi Python Lama

Untuk versi Python lebih awal daripada 2.7 , anda masih boleh memotong terapung, tetapi hasilnya mungkin tidak tepat disebabkan oleh pengehadan dalam mekanisme pemformatan titik terapung. Penyelesaian yang mungkin adalah dengan membulatkan apungan kepada ketepatan yang lebih tinggi sebelum memotong:

def truncate(f, n):
    '''Truncates/pads a float f to n decimal places without rounding'''
    s = '%.12f' % f
    i, p, d = s.partition('.')
    return '.'.join([i, (d+'0'*n)[:n]])
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Memotong Nilai Terapung ke Nombor Khusus Tempat Perpuluhan dalam Python tanpa Pembundaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan