Rumah  >  Artikel  >  pembangunan bahagian belakang  >  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
Susan Sarandonasal
2024-11-06 00:25:02264semak imbas

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

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]])

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]])

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:
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