01/10/2018, 11:24

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.

HK boy viết 13:33 ngày 01/10/2018

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

Trần Tiến Dũng viết 13:36 ngày 01/10/2018

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 đỡ

HK boy viết 13:34 ngày 01/10/2018

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.

Trần Tiến Dũng viết 13:26 ngày 01/10/2018

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

rogp10 viết 13:33 ngày 01/10/2018

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), phải viết cùng với << như xuất dữ liệu và chỉ có tác dụng tức thời.

Bài liên quan
0