Rumah > Artikel > pembangunan bahagian belakang > Mengapa `std::cout.precision()` Tidak Memaparkan Sifar Jejak seperti yang Dijangkakan?
Penggunaan std::cout.precision() yang Betul untuk Paparan Sifar Mengekor
Ketepatan yang dinyatakan menggunakan std::cout.precision( ) menentukan bilangan tempat perpuluhan yang akan disertakan semasa memformat nombor titik terapung. Walau bagaimanapun, dalam sesetengah kes, sifar mengekor mungkin tidak dipaparkan seperti yang dijangkakan.
Pertimbangkan coretan kod berikut:
#include <iostream> #include <stdlib.h> int main() { int a = 5; int b = 10; std::cout.precision(4); std::cout << (float)a / (float)b << "\n"; return 0; }
Kod ini cuba mengeluarkan hasil pembahagian dua integer sebagai terapung -nombor titik dengan ketepatan empat tempat perpuluhan. Walau bagaimanapun, output menunjukkan "0.5" dan bukannya "0.5000" yang dijangkakan. Ini berlaku kerana jenis data integer secara tersirat ditukar kepada titik terapung semasa melakukan pembahagian, tetapi ketepatan tidak digunakan secara khusus pada penukaran integer-ke-apung.
Untuk memaparkan sifar mengekor dengan betul, tambahan manipulator, std::fixed, mesti digunakan dengan std::cout:
#include <iostream> #include <stdlib.h> #include <iomanip> int main() { int a = 5; int b = 10; std::cout << std::fixed; std::cout << std::setprecision(4); std::cout << (float)a / (float)b << "\n"; return 0; }
The std::manipulator tetap mengarahkan std::cout untuk mengeluarkan nombor titik terapung dalam tatatanda titik tetap, yang termasuk sifar mengekor. Manipulator std::setprecision(4) menentukan bahawa output harus mempunyai ketepatan empat tempat perpuluhan.
Dengan memasukkan manipulator tetap std::, output coretan kod kini memaparkan sifar mengekor dengan betul, menghasilkan dalam "0.5000" seperti yang dijangkakan.
Atas ialah kandungan terperinci Mengapa `std::cout.precision()` Tidak Memaparkan Sifar Jejak seperti yang Dijangkakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!