Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Phép toán dấu chấm động và tính kết hợp trong C/C++/Java

Số thực (float/double) không tuân theo quy tắc kết hợp trong một số trường hợp do làm tròn.

Ví dụ

float x = -500000000;
float y = 500000000;
float z = 1;
cout << x + (y + z); // 0
cout << (x + y) + z; // 1

Giải thích: y+z = 500000001 → làm tròn thành 500000000 → +x = 0. Nhưng (x+y)=0 → +z = 1.

Dùng int thì cả hai đều = 1.