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.
Setprecision(3) trong C++ không hiện đủ 3 chữ số phần thập phân
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
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 đỡ
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
.
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
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 ) 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.
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