Pemotongan nilai apungan kepada nombor tertentu tempat perpuluhan, tanpa pembundaran, boleh dicapai dalam Python menggunakan 'truncate( )' fungsi. Fungsi ini mengambil dua hujah: nilai apungan untuk dipotong dan bilangan tempat perpuluhan untuk dikekalkan. Berikut ialah pelaksanaan fungsi yang menggunakan pembundaran pintar:
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]])
Fungsi menukar apungan kepada rentetan, memastikan ketepatan penuh dipelihara. Ia kemudian membahagikan rentetan kepada tiga bahagian: bahagian integer, titik perpuluhan dan digit perpuluhan. Ia mengekalkan digit perpuluhan, mengalas dengan sifar jika perlu dan menggabungkan semula bahagian untuk membentuk rentetan terpotong.
Dalam kes tertentu, tidak mungkin untuk mewakili apungan dalam perpuluhan dengan tepat tatatanda. Sebagai contoh, 0.3 tepat, boleh diwakili dengan tepat sebagai apungan IEEE tetapi bukan sebagai perpuluhan. Dalam kes sedemikian, fungsi menggunakan operasi pemformatan rentetan lalai yang disediakan oleh Python 2.7 dan lebih tinggi. Operasi ini bijak memilih perwakilan perpuluhan terdekat apungan, tanpa pembundaran.
Jika anda menggunakan versi Python lebih awal daripada 2.7 atau 3.0, anda boleh memotong apungkan dan bulatkannya kepada sejumlah besar tempat perpuluhan (mis., 12) sebelum memformatkan hasil sebagai rentetan. Pendekatan ini kurang tepat tetapi berfungsi dengan baik dalam kebanyakan kes:
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]])
Perhatikan bahawa pembundaran pintar mungkin menghasilkan positif palsu, di mana nombor dibundarkan yang tidak dimaksudkan. Untuk mengelakkan ini, ketepatan tetap boleh digunakan. Selain itu, versi Python terdahulu mungkin menghasilkan perwakilan perpuluhan yang tidak tepat. Dalam kes sedemikian, menggunakan penyelesaian 12 digit adalah disyorkan.
Atas ialah kandungan terperinci Bagaimana untuk Memotong Nilai Terapung dalam Python Tanpa Pembundaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!