help! Làm tròn số thập phân

2,272 views
Skip to first unread message

Thành Nguyễn

unread,
Feb 13, 2012, 9:07:37 AM2/13/12
to int2202ap
Các bạn ơi cho cho tớ hỏi cái này:
Trong bài thực hành của cố giáo có viết: "Các điểm thành phần
được làm tròn đến 0.5 trước khi tính.
TK được làm tròn đến 0.1" (Câu 2 trong bài thực hành)

Tớ không hiểu cách làm tròn là như thế nào. mong mọi người
trả lời giúp.

tuh...@vnu.edu.vn

unread,
Feb 13, 2012, 9:19:12 AM2/13/12
to int2...@googlegroups.com
làm tròn số a đến 0.5 double(int(a*2+0.5))/2;
làm tròn số a đến 0.1 double(int(a*10+0.5))/10;

Thành Nguyễn

unread,
Feb 13, 2012, 9:43:15 AM2/13/12
to int2202ap
oh. thế nếu nói như cậu thì từ 9đ lại lên 9.25 à!

Trần Thành Núi

unread,
Feb 13, 2012, 9:52:53 AM2/13/12
to int2202ap
bạn hiểu sai rồi kìa. ví dụ a=7.4 thì kết quả của phép int(a*2+0.5) là
15. kết hợp với cái double( )/2 thì đc 7.5 => dpcm

Thành Nguyễn

unread,
Feb 13, 2012, 10:02:57 AM2/13/12
to int2202ap

On 13 Tháng Hai, 21:52, Trần Thành Núi <nuitt...@vnu.edu.vn> wrote:
> bạn hiểu sai rồi kìa. ví dụ a=7.4 thì kết quả của phép int(a*2+0.5) là
> 15. kết hợp với cái double( )/2 thì đc 7.5 => dpcm


thanks! tớ nhầm

Nguyễn MInh Hiệp

unread,
Feb 13, 2012, 10:34:30 AM2/13/12
to int2202ap

TỚ dùng cái này tH=int(tH+0.5); tròn 0.5


tròn 0.1 giống trên

Nguyễn MInh Hiệp

unread,
Feb 13, 2012, 10:37:56 AM2/13/12
to int2202ap

On Feb 13, 10:34 pm, Nguyễn MInh Hiệp <hiepnm...@vnu.edu.vn> wrote:
> TỚ dùng cái này tH=int(tH+0.5); tròn 0.5
>
> tròn 0.1 giống trên

Nhầm rùi...

Hoang Minh Duong

unread,
Feb 13, 2012, 11:09:59 AM2/13/12
to int2...@googlegroups.com
Dear all,

1.Làm tròn số thập phân đến 0.1 thì bạn có thể dùng hàm setprecision() trong thư viện iomanip
VD:   float f=1.23456;
        cout<<setprecision(3)<<f;
Các bạn có thể kết hợp với cách đặt flag để làm tròn cho tất cả mọi số hiển thị trong bài (tra cứu trong slide hoặc sách)
2. Làm tròn đến 0.5 : dùng hàm ép kiểu int
VD :
       float f=7.8;
       cout<<int (f); // in ra là 7
Áp dụng vào mình sẽ có code làm tròn như sau:
//-------HÀM LÀM TRÒN-----------
float lamtron(float n){
      if ( n - int( n ) < 0.5 ) return int( n );
      else if ( n - int( n ) == 0.5 ) return n;
      else return  ( int(n) +1 );
}
//-------------------------------------------

Chúc các bạn học tốt,
HMD.

Phan Văn Thanh (thanhpv_56@vnu.edu.vn)

unread,
Feb 14, 2012, 3:51:33 AM2/14/12
to int2202ap
ak minh thay bai cua ban Hoang Minh Duong kha hay, minh bo sung them
chut:
lam tron den 0.5
float lam_tron(float a)//lam tron den 0.5
{
if((a-int(a))<=0.5)return (int(a));
else return (int(a)+1);
}
neu muon lam tron den 0.1 cho bien c chang han thi chi viec nhan them
10 thoi, vd nhe:
c=lam_tron(c*10)/10;
y cua minh la se dung lai ham viet o tren.hi

On 13 Tháng Hai, 23:09, Hoang Minh Duong <hoangminhduon...@gmail.com>
wrote:

Chiến Nguyễn

unread,
Feb 14, 2012, 4:22:17 AM2/14/12
to int2202ap
Mình làm phức tạp hơn. mình xây dựng 1 hàm làm tròn. rồi xét số a bất
kỳ cần làm tròn.
xét (a%0.5)<0.25 ta sẽ làm tròn xuống hoặc a%0.5>=0.25 ta sẽ làm tròn
lên bằng thuật toán tùy từng người chọn.

On 13 Tháng Hai, 21:07, Thành Nguyễn <thanhnt...@vnu.edu.vn> wrote:
> Các bạn ơi cho cho tớ hỏi cái này:
> Trong bài thực hành của cố giáo có viết: "Các điểm thành phần


> được làm tròn đến 0.5 trước khi tính.

> TK được làm tròn đến 0.1" (Câu 2 trong bài thực hành)
>
> Tớ không hiểu cách làm tròn là như thế nào. mong mọi người
> trả lời giúp.

Ngoc Dang Thi

unread,
Feb 15, 2012, 10:42:40 AM2/15/12
to int2202ap
dễ thui,không phúc tạp thế đâu.tớ dùng cout.precision(1) để làm tròn
đến 0.5.để làm tròn 0.1 dùng cout.precision(2).
sau khi dùng cout.precision(1) các lệnh cout sau đó sẽ được làm tròn.
Message has been deleted

Nguyễn Hồng Quân

unread,
Feb 16, 2012, 11:17:10 AM2/16/12
to int2202ap
Theo mình đề bài muốn bạn làm tròn số (về mặt giá trị).
Hàm ios::prection chỉ là setup khi ta in giá trị (làm tròn) ra màn
hình chứ thực chất giá trị của nó không thay đổi. (Cờ định dạng)
Reply all
Reply to author
Forward
0 new messages