Rumah >pembangunan bahagian belakang >C++ >Mengapakah `std::cout.precision()` Tidak Mencetak Sifar Jejak Secara Lalai?

Mengapakah `std::cout.precision()` Tidak Mencetak Sifar Jejak Secara Lalai?

Patricia Arquette
Patricia Arquetteasal
2024-11-09 04:30:011000semak imbas

Why Does `std::cout.precision()` Not Print Trailing Zeros By Default?

Memahami std::cout.precision() dan Trailing Zeros

std::cout.precision() ialah fungsi yang digunakan untuk mengawal bilangan tempat perpuluhan yang dipaparkan untuk nilai titik terapung. Walau bagaimanapun, dalam senario tertentu, sifar mengekor mungkin tidak dicetak 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 mencetak 0.5 dan bukannya 0.5000 yang dijangkakan. Ini bukan disebabkan oleh jenis data integer asal tetapi kekurangan penindasan sifar mengekor secara lalai.

Untuk memaparkan sifar mengekor dengan betul, manipulator tetap std::tetap mesti digunakan:

std::cout << std::fixed;
std::cout << std::setprecision(4);
std::cout << (float)a / (float)b << "\n";

Dengan penambahan ini, kod kini akan mengeluarkan 0.5000 seperti yang dimaksudkan. Manipulator tetap std::menentukan bahawa nilai titik terapung harus diformatkan dengan bilangan tempat perpuluhan tetap, memastikan sifar mengekor dikekalkan.

Atas ialah kandungan terperinci Mengapakah `std::cout.precision()` Tidak Mencetak Sifar Jejak Secara Lalai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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