30/09/2018, 21:11

Giải thích giúp em sự khác nhau của 2 đoạn code này với

Tại sao bên có 8.0 (kiểu số thực) thì lại ra kết quả đúng, bên còn lại thì không?
Giải thích giúp em vì sao nó ra được kết quả như vậy?( Bên bị sai ấy)
THANKS

Văn Dương viết 23:18 ngày 30/09/2018

Bên có 8.0 thì nó ép sang số thực nên tính đúng.
Bên kia không ép sang số thực nên tự làm tròn sang integer nên sai.

Tien Tran viết 23:27 ngày 30/09/2018

bên có 8.0 thì nó đổi kiểu tự đông qua kiểu số thực nên kết quả đúng
còn bên kia vẫn là số nguyên nên có thể tự làm tròn ko còn chính xác nữa

helloworld viết 23:26 ngày 30/09/2018

Nhưng em thắc mắc là nếu chỉ sai về cách làm tròn số thì kết quả nó chắc cũng không chênh lệch nhiều lắm nhỉ? Nhưng cái code ấy nó ra kết quá khác hoàn toàn ngay từ dòng đầu tiên luôn ấy

Code em đây, mn xem thử:

#include <stdio.h>
#include <stdlib.h>

int main()
{   int tien1 = 300000000;
    int nam = 10;

    int tien = tien1;

     for(int i=0; i<nam; i++){
    tien +=  tien*8/100;

        printf("So tien nhan duoc sau %d nam la: %d\n",i+1, tien );}
        printf("So tien lai la: %d", tien-tien1 );


    return 0;
}
Tien Tran viết 23:21 ngày 30/09/2018

nhân chia trước cộng trừ sau.
Tức là 8/100 trước ra 0 rùi + cho tien => sai số siêu lớn vì tien=300tr ra âm lun là phải

helloworld viết 23:19 ngày 30/09/2018

Vây tại sao khi i=0 thì “tien” lại nhỏ hơn 300tr?

Tien Tran viết 23:27 ngày 30/09/2018

bạn nói rõ hơn dc ko

Tien Tran viết 23:26 ngày 30/09/2018

tức là for(int I=0;;I++) ak

helloworld viết 23:21 ngày 30/09/2018

Ý em là khi em debug thì thấy là khi i=0( Vòng lặp) thì giá trị của “tien” lúc ấy là 281050328, tại sao lại như vậy ạ?

Tien Tran viết 23:19 ngày 30/09/2018

tien+= tien8/100
=tien+tien
8/100
thay số bấm zo máy tính biết liền

helloworld viết 23:20 ngày 30/09/2018

Thay số ntn để ra được con số 281050328 ấy? Em mới học nên chưa rõ lắm, anh thông cảm nhé!

Tien Tran viết 23:12 ngày 30/09/2018

tien=tien1=300000000
=>300000000+300000000*8/100
hết
cho anh link kết bạn trên face đi
anh đang học lập trình game nếu có thêm người theo c++ lập trình game thì vui và học sẽ nhah hơn cho cả 2.Anh sẽ jup e hết sức

Tao Không Ngu. viết 23:14 ngày 30/09/2018

This post was flagged by the community and is temporarily hidden.

Tien Tran viết 23:17 ngày 30/09/2018

đang học đó mà
dù gì thì mình vẫn đang học lớp 8 time còn dài lo j

Tao Không Ngu. viết 23:22 ngày 30/09/2018

This post was flagged by the community and is temporarily hidden.

Tien Tran viết 23:13 ngày 30/09/2018

cocos2d-x hỏi chi vậy

Tao Không Ngu. viết 23:22 ngày 30/09/2018

This post was flagged by the community and is temporarily hidden.

Tao Không Ngu. viết 23:26 ngày 30/09/2018

This post was flagged by the community and is temporarily hidden.

Tao Không Ngu. viết 23:11 ngày 30/09/2018

This post was flagged by the community and is temporarily hidden.

Tien Tran viết 23:19 ngày 30/09/2018

uk nếu bạn đang dung Unity thì năm sau hợp tác dc ko

Tao Không Ngu. viết 23:12 ngày 30/09/2018

This post was flagged by the community and is temporarily hidden.

Bài liên quan
0