Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa Beberapa Nombor Perpuluhan Nampak Tidak Tepat Apabila Diwakili sebagai Terapung dalam Python?

Mengapa Beberapa Nombor Perpuluhan Nampak Tidak Tepat Apabila Diwakili sebagai Terapung dalam Python?

Barbara Streisand
Lepaskan: 2024-12-06 02:20:14
asal
712 orang telah melayarinya

Why Do Some Decimal Numbers Appear Inaccurate When Represented as Floats in Python?

Ralat Bulat dengan Nombor Titik Terapung dalam Python: Membongkar Misteri

Dalam bidang pengiraan berangka, berurusan dengan terapung- nombor mata boleh menimbulkan cabaran kerana ketepatannya yang terhad. Semasa melaksanakan skrip Python yang melibatkan variasi parameter, isu yang tidak dijangka timbul: ketiadaan hasil untuk nilai delta tertentu (0.29 dan 0.58). Pemeriksaan yang lebih dekat mendedahkan kebenaran asas – ketidakupayaan yang wujud Python untuk mewakili nombor tertentu sama seperti terapung.

Untuk menunjukkan fenomena ini, coretan kod berikut cuba menukar julat integer kepada setara apungannya:

for i_delta in range(0, 101, 1):
  delta = float(i_delta) / 100
Salin selepas log masuk

Menariknya, untuk integer tertentu seperti 29 dan 58, nilai apungan yang terhasil (0.28999999999999998 dan 0.57999999999999996, masing-masing) gagal menyamai jangkaan setara mereka (0.29 dan 0.58). Percanggahan ini berpunca daripada had asas aritmetik titik terapung.

Semua sistem titik terapung menganggarkan nombor nyata menggunakan gabungan asas, eksponen dan nombor tetap bit bererti. Nilai tertentu, terutamanya yang mempunyai bahagian pecahan yang tidak boleh dinyatakan dengan tepat sebagai kuasa dua, sememangnya mencabar untuk diwakili dengan tepat. Akibatnya, nilai ini dibundarkan atau dianggarkan semasa penyimpanan dan pengiraan.

Untuk menggambarkan kesan pembundaran ini, skrip Python telah direka untuk menunjukkan percanggahan antara integer sebenar dan anggaran terapungnya:

import sys

n = int(sys.argv[1])

for i in range(0, n + 1):
  a = int(100 * (float(i) / 100))
  if i != a: print i, a
Salin selepas log masuk

Walaupun nampaknya tiada corak yang boleh dilihat dalam nombor yang menunjukkan tingkah laku ini, prinsip asasnya kekal malar: sebarang nombor yang tidak boleh diwakili dengan tepat sebagai gabungan kuasa tepat dua menghadapi kemungkinan dianggarkan apabila disimpan sebagai apungan.

Untuk menyelidiki dengan lebih mendalam kerumitan aritmetik titik terapung dan akibatnya dalam pengkomputeran, meneroka sumber seperti "Apa Yang Setiap Saintis Komputer Patut Tahu Mengenai Aritmetik Titik Terapung" amat disyorkan. Memahami nuansa ini adalah penting untuk menavigasi masalah analisis berangka dan memastikan ketepatan pengiraan anda.

Atas ialah kandungan terperinci Mengapa Beberapa Nombor Perpuluhan Nampak Tidak Tepat Apabila Diwakili sebagai Terapung 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