Ketepatan Titik Terapung dalam C
Apabila berurusan dengan nombor titik terapung dalam C , adalah penting untuk memahami had ketepatannya. Pertimbangkan kod berikut:
<code class="cpp">double a = 0.3; std::cout.precision(20); std::cout << a << std::endl;
Hasilnya ialah 0.2999999999999999889 dan bukannya 0.3, menunjukkan kehilangan ketepatan. Untuk menangani perkara ini, C menyediakan pemalar std::numeric_limits Begini cara menggunakan std::numeric_limits Kod ini menetapkan ketepatan kepada bilangan maksimum digit bererti yang boleh diwakili dengan tepat dengan dua kali ganda. Hasilnya, output akan menjadi 0.3 dalam kedua-dua kes. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa walaupun dengan pendekatan ini, ralat terkumpul mungkin berlaku jika gelung berulang dengan ketara lebih daripada 50 kali. Ini kerana nombor titik terapung adalah anggaran, dan ralat boleh terkumpul sepanjang siri operasi. Untuk mengendalikan situasi sedemikian, adalah disyorkan untuk menggunakan perpustakaan yang menyediakan aritmetik ketepatan arbitrari, seperti Boost.Multiprecision. Atas ialah kandungan terperinci Bagaimana untuk Memastikan Ketepatan Titik Terapung dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!<code class="cpp">#include <iostream>
#include <limits>
int main()
{
double a = 0.3;
std::cout.precision(std::numeric_limits<double>::digits10);
std::cout << a << std::endl;
double b = 0;
for (char i = 1; i <= 50; i++) {
b = b + a;
};
std::cout.precision(std::numeric_limits<double>::digits10);
std::cout << b << std::endl;
}</code>