Bagaimana untuk menyemak sama ada Float Mewakili Integer dalam Python?

Susan Sarandon
Lepaskan: 2024-11-13 01:11:02
asal
452 orang telah melayarinya

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
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

Kami memperoleh hasil yang dijangkakan:

27
8
1
0
Salin selepas log masuk

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
Salin selepas log masuk

Variasi ini menghasilkan:

10648
27
8
1
0
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan