Tôi đã nhìn thấy đoạn mã này tài chính tính toán tại máy tính của bạn tôi:0.0/0.0 trong C# sẽ không ném "Đã cố gắng chia cho số không."?
double Total = ...
double Paid = ...
double Wating_For_Details = ...
double Decuctibles = ...
double Rejected = ...
Vâng, thời điểm tôi thấy điều này, tôi nói với ông rằng double
được biểu diễn tại base 2
và có thể KHÔNG đại diện cho tính toán tài chính. sử dụng decimal
để thay thế.
tuyệt vời.
Nhưng thời điểm tôi thay đổi nó sẽ tăng gấp đôi Ive gặp phải:
Attempted to divide by zero.
HUH?
Rõ ràng - sử dụng double
, khi chia với 0.0
nó KHÔNG ném ngoại lệ:
Nhưng trả NAN
.
Trong khi mã của tôi (sử dụng decimal
) không ngoại lệ ném (khi Total
là zero
)
Và vì vậy tôi hỏi:
Tôi đã kiểm tra 0.0==0
và nó trả về true. vậy tại sao tôi không nhận được ngoại lệ nhưng NAN
? Tôi biết thats nó nên được như thế nào, nhưng là nơi phổ biến của không ném ngoại lệ khi chia đôi bằng không?
"Tôi đã kiểm tra' 0.0 == 0' "- bạn nghĩ điều gì thực sự được kiểm tra? Các toán hạng ở cả hai mặt là các kiểu không bằng nhau, nhưng một phép chuyển đổi ngầm cho 'int' thành' double' tồn tại - vì vậy những gì bạn thực sự kiểm tra là '0.0 == 0.0'. –
Ngoài ra, câu hỏi của bạn được đặt ra như thể ném một ngoại lệ là * rõ ràng * điều chính xác cần làm trong tình huống này - có rất nhiều thương mại trong thế giới máy tính, và thường không có cách nào "đúng" để làm việc. –
Tương tự như http://stackoverflow.com/questions/4609698/inconsistency-in-divide-by-zero-behavior-between-different-value-types (mặc dù không chính xác trùng lặp) – bigge