Menentukan Integeriti Nilai Terapung
Dalam coretan kod ini, anda sedang mencari punca kubus terbesar iaitu nombor bulat, kurang daripada 12,000:
processing = True n = 12000 while processing: n -= 1 if n ** (1/3) == #checks to see if this has decimals or not
Untuk mengesahkan sama ada nilai apungan ialah integer, anda boleh menggunakan kaedah float.is_integer():
>>> (1.0).is_integer() True >>> (1.555).is_integer() False
Perhatikan bahawa dalam Python 2, 1/3 menghasilkan 0 disebabkan oleh pembahagian lantai untuk operan integer, dan aritmetik titik terapung boleh menjadi tidak tepat. Melaraskan gelung dengan mengambil kira perkara ini:
for n in range(12000, -1, -1): if (n ** (1.0/3)).is_integer(): print n
Kami memperoleh hasil yang dijangkakan:
27 8 1 0
Walau bagaimanapun, disebabkan ketidaktepatan aritmetik titik terapung, nombor lebih tinggi daripada 3 kiub ( termasuk 10648) ditinggalkan. Untuk menangani perkara ini, anda boleh menyemak nombor yang hampir dengan nombor bulat sebaliknya:
import math for n in range(12000, -1, -1): if math.isclose((n ** (1.0/3)), round(n ** (1.0/3))): print n
Variasi ini menghasilkan:
10648 27 8 1 0
Untuk Python 3.5 dan yang lebih baru, anda boleh menggunakan matematik. fungsi isclose() untuk menyemak sama ada nilai titik terapung berada dalam jidar yang boleh disesuaikan.
Atas ialah kandungan terperinci Bagaimana untuk menyemak sama ada Float Mewakili Integer dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!