std::cout.precision() dan Trailing Zeros
Memahami penggunaan std::cout.precision() yang betul adalah penting apabila memaparkan nombor titik terapung. Dalam artikel ini, kami akan mengkaji contoh khusus untuk menyelesaikan tingkah laku yang tidak dijangka.
Kod dan Isu Awal
Pertimbangkan kod berikut yang cuba memaparkan hasil daripada membahagikan dua integer sebagai nombor titik terapung:
#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 dijangka memaparkan 0.5000, tetapi sebaliknya, ia mencetak 0.5. Percanggahan ini timbul kerana sifat jenis data asal ialah integer.
Penyelesaian: std::Manipulator tetap
Untuk memaparkan sifar mengekor bagi nombor titik terapung, anda mesti lulus std::fixed manipulator kepada std::cout. Manipulator ini memastikan bahawa perwakilan perpuluhan menggunakan tatatanda titik tetap, mengekalkan sifar mengekor.
#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; }
Dengan manipulator tetap std::, kod kini mencetak 0.5000 dengan betul. Manipulator std::setprecision() tetap bertanggungjawab untuk menentukan bilangan tempat perpuluhan yang dikehendaki.
Atas ialah kandungan terperinci Mengapakah `std::cout.precision()` Tidak Memaparkan Sifar Mengekor untuk Nombor Titik Terapung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!