Hỏi đáp
Chia sẻ kiến thức, cùng nhau phát triển
Double a = 3.14;
float b = 3.14f;
if (a == b)
{
Console.WriteLine("Right");
}
else { Console.WriteLine("Wrong"); }
Console.ReadKey();
Mình có đoạn code như trên cho mình hỏi tại sao a lại nhỏ hơn b cũng là 3.14
nó không phải lấy giá trị bạn nhìn thấy để so sánh mà nó so sánh theo dấu chấm động. Theo giá trị dãy bit của nó.
ở đây k == chứ k phải nhỏ hơn
Hình như chữ f là rút gọn lại, trong chữ f còn số nữa ^^. Pi là số thập phân vô hạn mà !
float là 4 byte còn double là 8 byte nên 2 cái sẽ có phần khác nhau, và nó so sánh với nhau qua dấu chấm động nữa, thường ít khi phải so sánh mấy số như thế này lắm, với cả bạn nhìn là 3.14 nhưng thực chất nó cũng chỉ là số làm tròn mà thôi
- thường thì so sánh mấy cái số thập phân này là không nên nhé. k có gì chắc chắn là nó sẽ bằng nhau cả.
- tuy nhiên trong thực tế đôi khi ta cần so sánh. các bạn có thể xài cách này của mình.
- nhân cả 2 số đó với 10000 hoặc 1 triệu gì đó. sau đó ép sang kiểu nguyên và so sánh.
- 100% là đúng.
Mình hiểu rồi mình cám ơn nhé!