Setprecision(3) trong C++ không hiện đủ 3 chữ số phần thập phân

Em chào mọi người ạ
Em mới học C++ đến phần hàm setprecision() hàm này theo giáo trình setprecision(n): Chỉ định số chữ số của phần thập phân in ra là n. Số sẽ được làm tròn trước khi in ra mà sau khi code em thấy không giống trong sách ạ mong anh chị đi trước chỉ cho em.

2 Likes

Sửa dòng in thành

cout << setprecision(3) << fixed << "a = " << a << endl;

Về fixed: link

Thêm nữa, setprecision không phải hàm: link

5 Likes

Mình hơi kém tiếng anh bạn có thể giải thích chi tiết cho mình về setprecision được không ạ mình cảm ơn bạn ạ :)) mong đưỡ giúp đỡ

2 Likes

Link kia có code và giải thích khá dễ hiểu mà. Kém tiếng Anh thì học.

cout << setprecision(n) << f in số thập phân f làm tròn đến n chữ số thập phân. Nhưng nếu f có ít hơn n chữ số phần thập phân, ví dụ như

f = 1.2
n = 3

thì khi cout << setprecision(n) << f sẽ chỉ in ra 1.2 mà không hiện đầy đủ 3 chữ số phần thập phân.

Do vậy, nếu muốn in f = 1.2 với chữ số thập phân thành f = 1.200 thì thêm fixed. “fixed” trong tiếng Anh có nghĩa là “cố định”. Ta phải cố định in ra n chữ số phần thập phân thì ta mới thấy kết quả như mong đợi.

f = 1.2
n = 3
cout << setprecision(n) << fixed << f;

sẽ ra 1.200.

11 Likes

Cảm ơn bạn rất nhiều nhé mình sẽ cố gắng hơn về ngoại ngữ để không gặp phải vấn đề như này nữa

4 Likes

Bạn xem bài có đánh tick phía trên nhé. Cái std::setprecision(int) này phải dùng phối hợp với std::fixed (hay dùng), std::scientific, std::defaultfloat (mặc định :smiley: ) và std::hexfloat.

Năm hàm này đều là stream manipulator (bạn sẽ gặp dạng method của chúng, nó mới có tác dụng lâu dài), phải viết cùng với << như xuất dữ liệu và chỉ có tác dụng với output kế tiếp.

5 Likes

Cho em hỏi nếu theo anh nói thì code dưới đây ra 0.1 chứ ạ?

#include<iomanip>
#include<iostream>
using namespace std;

int main()
{
	cout << setprecision(17);
	double var_x = 0.1;
	cout << var_x;
	return 0;
}

Mình không biết, bạn đã thử tự chạy code trước khi hỏi chưa?

dạ r anh, nó ra 0.10000000000000001 mà e đọc mấy tài liệu thấy k dùng hàm fixed mà sao nó ra được vậy:)) –

có lẽ tại 0.1 ở std::fixed hay std::scientific gì đều in ra là 0.100.. gì đó hết, thử số A vô ga drô xem nó có in ra đúng ko :V hay 1234.5678 cũng được :V

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?