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

Patricia Arquette
Lepaskan: 2024-11-09 04:30:01
asal
954 orang telah melayarinya

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;
}
Salin selepas log masuk

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";
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan