Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Memotong Nilai Terapung Dengan Tepat Tanpa Pembundaran?
Memotong nilai apungan, atau mengalih keluar digit melebihi bilangan tempat perpuluhan yang ditentukan, ialah operasi biasa dalam pengaturcaraan. Walau bagaimanapun, mencapai pemangkasan yang tepat tanpa pembundaran boleh menjadi mencabar kerana batasan perwakilan titik terapung.
Pertimbangkan contoh:
1.923328437452 -> 1.923
Seorang naif pendekatan adalah untuk menukar apungan kepada rentetan dan memotongnya, tetapi ini boleh menyebabkan ralat disebabkan oleh sifat perwakilan titik terapung yang tidak tepat. Nilai titik terapung yang berbeza mungkin mempunyai perwakilan binari yang sama, menghasilkan pemangkasan yang tidak jelas.
Untuk versi Python 2.7 dan ke atas, fungsi berikut menyediakan pemangkasan yang tepat tanpa pembundaran:
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]])
Inti kaedah ini adalah untuk menukar apungan kepada rentetan menggunakan '{}'.format(f) dan memotong rentetan kepada bilangan tempat perpuluhan yang dikehendaki. Untuk nilai dalam tatatanda saintifik ('e' atau 'E'), sintaks '{0:.{1}f}'.format(f, n) digunakan untuk menentukan ketepatan.
Dalam kes yang jarang berlaku, terapung sangat hampir dengan nombor bulat mungkin masih tersalah dipotong. Untuk kes sedemikian, nyatakan ketepatan yang lebih tinggi untuk memastikan pembundaran semasa penukaran rentetan tidak menjejaskan keputusan.
Untuk versi Python di bawah 2.7, kaedah yang kurang tepat melibatkan pembundaran apungan kepada 12 tempat perpuluhan sebelum pemotongan:
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]])
Kod ini menyediakan penyelesaian yang mantap untuk memotong nilai apungan tanpa pembundaran, memastikan pemangkasan yang tepat untuk pelbagai input.
Atas ialah kandungan terperinci Bagaimana untuk Memotong Nilai Terapung Dengan Tepat Tanpa Pembundaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!