ich diese Finanz Berechnung Code gesehen habe am Computer meines Freundes:0.0/0.0 in C# wird nicht geworfen "Versuch, durch Null zu teilen."?
double Total = ...
double Paid = ...
double Wating_For_Details = ...
double Decuctibles = ...
double Rejected = ...
Nun, den Moment, als ich das sah, sagte ich ihm, dass double
bei base 2
vertreten und kann NICHT Finanzberechnung darstellen. Verwenden Sie stattdessen decimal
.
groß.
Aber der Moment, als ich es ändern Ive zu verdoppeln begegnet:
Attempted to divide by zero.
HUH?
Offenbar - mit double
, wenn sie mit 0.0
Dividieren es tut NICHT Ausnahme auslöst:
Aber kehrt NAN
.
Während mein Code (mit decimal
) wirft Ausnahme
(wenn Total
zero
ist) Und so frage ich:
I 0.0==0
geprüft und es gibt true zurück. also warum bekomme ich keine Ausnahme aber NAN
? Ich weiß, wie es sein sollte, aber wo ist der allgemeine Sinn, keine Ausnahme zu werfen, wenn man doppelt durch Null teilt?
"Ich überprüfte' 0.0 == 0' "- was denkst du, dass tatsächlich überprüft? Die Operanden auf beiden Seiten haben ungleiche Typen, aber es gibt eine implizite Umwandlung von "int" zu "double" - was Sie also überprüft haben, war "0,0 == 0.0". –
Auch Ihre Frage ist so gestellt, als ob das Auslösen einer Ausnahme * offensichtlich * das Richtige in dieser Situation ist - es gibt viele Kompromisse in der Computerwelt und oft keinen einzigen "richtigen" Weg, Dinge zu tun. –
Ähnlich wie http://stackoverflow.com/questions/4609698/inconsistency-in-divide-by-zero-behavior-between-different-value-types (obwohl nicht genau dupliziert) – bigge