Hỏi đáp
Chia sẻ kiến thức, cùng nhau phát triển
Toán tử cộng với biến double ra kết quả sai , bị lẻ ( gần đúng )
Hi AD .
Cho mình hỏi chút là sao khi cộng các biến double thì kết quả chỉ ra gần đúng vậy .
Ví dụ như sau :
a = 10.5
b = 20.4
c = 13.2
thì kết quả a+b+c = 44.099999999999994.
Code của mình thì như sau :
Console.WriteLine(" Cung lam phep cong 3 so nhe : ");
NhapBienSo1:
Console.Write(" xin moi ban nhap bien so 1 = ");
double BienSo1;
isResult = double.TryParse(Console.ReadLine() , out BienSo1);
if (isResult == false)
Console.WriteLine("Nhap sai dinh dang . Can nhap lai la dinh dang so");
if (isResult == false)
goto NhapBienSo1;
NhapBienSo2:
Console.Write(" xin moi ban nhap bien so 2 = ");
double BienSo2;
isResult = double.TryParse(Console.ReadLine(), out BienSo2);
if (isResult == false)
Console.WriteLine("Nhap sai dinh dang . Can nhap lai la dinh dang so");
if (isResult == false)
goto NhapBienSo2;
NhapBienSo3:
Console.Write(" xin moi ban nhap bien so 3 = ");
double BienSo3;
isResult = double.TryParse(Console.ReadLine(), out BienSo3);
if (isResult == false)
Console.WriteLine("Nhap sai dinh dang . Can nhap lai la dinh dang so");
if (isResult == false)
goto NhapBienSo3;
double KetQua = BienSo1 + BienSo2 + BienSo3;
Console.WriteLine(" a = {0} , b = {1} , c = {2} , a + b + c = {3}", BienSo1, BienSo2, BienSo3, KetQua);
hỗ trợ giải đáp giúp mình với , cảm ơn
Đây là một lỗi xảy ra ở toàn bộ các ngôn ngữ lập trình
Nó liên quan đến cách lưu trữ các giá trị số thực trong máy tính. Một cách dễ hiểu, máy tính sẽ chuyển các số thực về dạng các chuỗi nhị phân và lưu trữ trong máy tính. Việc chuyển đổi này không thể được thực hiện tối ưu, do đó tạo ra sai số dẫn đến kết quả bị sai :v
Bạn có thể tham khảo thêm tại: https://en.wikipedia.org/wiki/Round-off_error
mình dùng visual studio thì hay để .ToString("c")); để làm tròn kết quả thành 2 chữ số