Kết của của hàm này sẽ là gì?
abs(3.*(4./3.-1.)-1.);
Kết của của hàm này sẽ là gì?
abs(3.*(4./3.-1.)-1.);
Về mặt toán học:
abs(3.*(4./3.-1.)-1.)
= abs(3.*(1./3)-1.)
= abs(3.*(1./3)-1.)
= 0
Tuy nhiên, trong máy tính, 31/3 chưa chắc đã bằng 1 nên abs(31/3-1) là 1 số xấp xỉ 0 nhưng không phải là 0.
Python ra 0.0:
>>> abs(3.*(1./3)-1.)
0.0
Câu này hay thật, mình thì thấy rõ nó bằng 0, nhưng js nó ra: 2.220446049250313e-16
Có lẽ là nó tính từng phần:
Math.abs(3*(4/3-1)-1);
= Math.abs(3*(1.3333333333333333-1)-1);
= Math.abs(3*0.33333333333333326-1);
= Math.abs(0.9999999999999998-1);
= Math.abs(-2.220446049250313e-16);
= 2.220446049250313e-16
Không biết dấu .
đằng sau có gây thêm vấn đề gì ở ngôn ngữ lập trình khác hay không.
Làm toán với số thực sẽ xảy ra sai số, không ít thì nhiều.
Ở đây kết quả của bạn nếu làm tròn thì cũng ra 0.
Chắc đó của là ý của thớt, về cách tính của máy tính.