Rumah > pembangunan bahagian belakang > C++ > Mengapa `std::cout.precision()` Tidak Memaparkan Sifar Jejak seperti yang Dijangkakan?

Mengapa `std::cout.precision()` Tidak Memaparkan Sifar Jejak seperti yang Dijangkakan?

Susan Sarandon
Lepaskan: 2024-11-11 08:26:02
asal
291 orang telah melayarinya

Why Doesn't `std::cout.precision()` Display Trailing Zeros as Expected?

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

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

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!

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