Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Kita Boleh Mengatasi Isu Ketepatan dalam Aritmetik Titik Terapung?
Mengatasi Isu Ketepatan dalam Nombor Titik Terapung
Nombor titik terapung, jenis data yang digunakan secara meluas dalam pengkomputeran, menimbulkan masalah ketepatan yang berpotensi disebabkan kepada perwakilan intrinsik mereka dalam mesin. Untuk menggambarkan isu ini:
#include <stdio.h> #include <stdlib.h> int main() { char *str = "4.600"; double mw = atof(str); float p = 0.2; float g = 0.2; int h = 1; int columns = (int)((mw - (h * 11 * p)) / ((h * 11 * p) + g)) + 1; printf("%f\n", (mw - (h * 11 * p)) / ((h * 11 * p) + g)); printf("Columns: %d\n", columns); return 0; }
Dalam kod ini, str ialah perwakilan rentetan bagi "4.600", dan memanggil atof(str) menukarkannya kepada mw berganda. Pengiraan seterusnya menghasilkan keputusan yang malang: perwakilan titik terapung 4.5999999999999996 tidak boleh mewakili nilai 4.600 yang diingini dengan tepat.
Mengatasi Isu
Penyelesaian >Diserlahkan dengan tepat , mencapai kesamaan tepat dengan aritmetik titik terapung boleh dikatakan mustahil. Sebaliknya, adalah lebih baik untuk membandingkan nilai dalam julat yang boleh diterima. Dalam senario tertentu, adalah penting untuk mengetahui bahawa nilai tertentu tidak boleh diwakili dengan tepat sebagai nombor titik terapung.
Sumber Disyorkan
Untuk mendapatkan maklumat lanjut, rujuk rujukan berikut:
Atas ialah kandungan terperinci Bagaimanakah Kita Boleh Mengatasi Isu Ketepatan dalam Aritmetik Titik Terapung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!