Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menyemak sama ada Float Mewakili Integer dalam Python?

Bagaimana untuk menyemak sama ada Float Mewakili Integer dalam Python?

Susan Sarandon
Susan Sarandonasal
2024-11-13 01:11:02450semak imbas

How to Check if a Float Represents an Integer in Python?

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!

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