Mengapakah `std::cout.precision()` Tidak Memaparkan Sifar Mengekor untuk Nombor Titik Terapung?

Susan Sarandon
Lepaskan: 2024-11-08 21:14:01
asal
545 orang telah melayarinya

Why Does  `std::cout.precision()` Not Display Trailing Zeros for Floating-Point Numbers?

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

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

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!

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