Họ không phải là rất nhiều thứ mà bạn sử dụng vì họ là một cái gì đó bạn cần phải nhận thức được:
double hmm = 1.0/0.0;
double hmm2 = -1.0/0.0;
double hmm3 = 0.0/0.0;
Console.WriteLine("1/0 == {0}", hmm);
Console.WriteLine("-1/0 == {0}", hmm2);
Console.WriteLine("0/0 == {0}", hmm3);
Output:
1/0 == Infinity
-1/0 == -Infinity
0/0 == NaN
EDIT: Đối với câu hỏi này:
Nếu có các hằng số như thế này, tại sao float.Par se ("a") ném một lỗi thay vì trả về float.NaN?
double.NaN
thực sự là một định nghĩa toán học một cách - đó là "định nghĩa" như 0.0/0.0
- trong khi dòng chữ "không phải là một con số" ngụ ý rằng một cái gì đó giống như double.Parse("a")
cũng nên trở double.NaN
, nó không. Tại sao?
linh cảm của tôi là bởi vì nó sẽ không thể để xác định xem double.NaN
bạn nhận được là kết quả của dữ liệu rác (trong trường hợp của chuỗi) hoặc thực tế nghĩa của một số không xác định, giống như zero chia cho zero. Vì vậy, để tạo sự khác biệt giữa hai trường hợp này, double.Parse("a")
ném một số Exception
, điều mà tôi cảm thấy là chính xác hơn.
bạn có thể sử dụng TryParse hơn là phân tích cú pháp? – Liam
Được sử dụng vì hoạt động toán học. – Evgeny
@Evgeny: bình luận mơ hồ nhất. –